福州建设委员会网站湖南正规seo公司
biteme
远离我的服务器!
端口扫描
循例 nmap
Web枚举
打开一看是一个默认页面
扫一波
打thm这么久,貌似还是第一次见带验证码的登录
信息有限,对着/console再扫一波
查看/securimage
但似乎没有找到能利用的信息
回到console, 在源码发现一个做了混淆的js
function handleSubmit() {eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0.1(\'2\').3=\'4\';5.6(\'@7 8 9 a b c d e f g h i... j\');',20,20,'document|getElementById|clicked|value|yes|console|log|fred|I|turned|on|php|file|syntax|highlighting|for|you|to|review|jason'.split('|'),0,{}))return true;}
将其丢到浏览器控制台
搜索一下
瞬间黑盒变白盒
跟到functions.phps
继续跟到config.phps
在functions.phps中,通过将$user转十六进制去验证的,那么这一串字符串肯定就是十六进制字符串,使用xxd解码
得到一个账户名
那么对于密码:
function is_valid_pwd($pwd) {$hash = md5($pwd);return substr($hash, -3) === '001';
}
这段代码将会将$pwd进行MD5,然后判断MD5的后三位是否为001
这里python写个脚本
import hashlibwith open('/usr/share/wordlists/rockyou.txt', 'r', encoding='ISO-8859-1') as f1:for val in f1.readlines():val = val.strip()has = hashlib.md5(val.encode('utf-8')).hexdigest()if has[len(has)-3:len(has)] == '001':print(f'{val} : {has}')
如果你的电脑足够强悍,也可以试试这个bash一句话
使用刚刚获得的账户和脚本跑出来的任意密码,登录
有mfa,但庆幸的是并没有任何输入次数限制,四位数字我们可以很轻松爆破出来
bash生成字典
ffuf直接爆
登录进去,发现直接就是一个文件包含
但似乎无法通过伪协议造成rce
由于可以查看任意目录,发现jason/.ssh下有id_rsa,尝试读取出来
直接登录ssh,发现需要密码
ssh2john+john直接爆
成功进来
横向移动
查看sudo -l
直接移动到fred
权限提升
查看sudo -l
又是些邪门歪道的提权
根据以往的经验,基本都是在配置文件中作妖
切换到配置文件目录,尝试find一下哪些文件我们当前用户所有
果然有
修改好后,重启服务
现在需要想办法触发它
在jail.local定义了相关规则
用hydra随便跑一下
getroot