VulnHub之Aiweb1练习过程

靶机:aiweb1
URL: http://download.vulnhub.com/aiweb/AI-Web-1.0.7z
 
Windows10+VMware+kali
 
信息搜集
1. 导入虚拟机,不用做多余配置。网络设置为NAT,开启DHCP。
2、查看靶机IP:确认地址范围,使用Nmap进行地址段扫描,找到运行web服务的靶机ip 
    192.168.44.141
 
3、该靶机有http服务,访问80端口
 
4、敏感文件收集
    使用kali自带的dirb工具,进行目录扫描,找到一个禁止爬虫爬取的规则文件robots.txt
 
 
    发现了两个的目录,把他们都丢进dirb再扫一次,发现m3diNf0目录下有phpinfo文件,从这个文件里得到中间件版本和最重要的一个信息网站根目录
    
    接着扫描第二个se3reTdir777目录
 
    
 
    除了已知的uploads目录之外,存在一个index.php文件,浏览器打开
 
5、寻找漏洞点
    输入一个单引号测试,报错,说明可能存在POST注入:
    此时使用Burp,注意这里使用的是burp中的插件CO2,链接了sqlmap,如果你没有装这个插件,可以在BApp Store中安装,或者直接使用sqlmap,抓取到数据包后,单击右键——send to SQLMapper.
 
    转到了CO2的选项中,首先进行配置,配置SQL和PYTHON的路径,再点击run即可:
 
    得到数据库为aiweb1,表名为user,systemUser
 
 
    上传shell
    里面还是有些演示数据,但是并没有什么用,所以直接尝试shell
    成功后得到sqlmap生成的文件上传脚本URL
 
 
    kali自带的shell脚本位置/usr/share/webshells/(php/php-reverse-shell.php)
    使用这个文件上传一个反弹shell到目标服务器:
    上传之前修改ip和端口(攻击者):
    
 
    上传成功:
    
 
    访问shell的URL地址,同时使用nc -lvvp 4444监听4444端口,shell反弹成功
 
    提权
    whoami显示目前的登录账号为www-data,同时www-data用户对/etc/passwd具有写权限
 
 
 
    那么可以通过修改/etc/passwd文件实现添加一个root权限的新用户来实现提权操作,另外因为后面需要用到的su,命令必须是在终端环境中才能运行,所以需要使用python的pty库实现一个伪终端操作。命令为python -c 'import pty; pty.spawn("/bin/bash")'
 
    Linux中用户的密码保存在/etc/shadow文件内,但是一般情况下提权之前没办法读取到文件内容,且密码是加密的,所以现在需要向/etc/passwd文件中写入一个含有已知加密密码的具有root权限的用户信息,然后Linux会将这个用户信息更新到/etc/shadow文件内,即完成了提权操作。
/etc/shadow文件格式:
{用户名}:{加密后的口令密码}:{口令最后修改时间据原点(1970-1-1)的天数}:{口令最小修改间隔(防止修改口令,如果时限未到,将恢复至旧口令)}:{口令最大修改间隔}:{口令失效前的警告天数}:{账户不活动天数}:{账号失效天数}:{保留}
crypt()函数原型char *crypt(const char *key,const char *salt);其中salt加密参数为某个固定长度的字符串:
    截图中显示的都是双写的字母,不知道这个情况是怎么回事,但是命令还是可以执行,perl -le 'print crypt("10086","bb")'
 
    这样就得到了一个加密后的密码,组合写入/etc/passwd文件中,su提权为root
    echo "test:bbma0iajVxQUI:0:0:rootroot:/root:bin/bash" >> /etc/passwd
 
    得到flag:
 
 
 
 
 
 
 
 
 
posted @ 2020-06-19 10:23  XYDD  阅读(290)  评论(0编辑  收藏  举报