0x00 前言
最近买了一年的国内某云的服务器。这篇文章主要记录一下我在这台服务器上做的事情,避免以后采坑。操作系统是Ubuntu18.04,持续更新。
0x01 换源
备份源文件
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
更改文件权限使其可编辑
$ sudo chmod 777 /etc/apt/sources.list
Ubuntu 18.04 阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
别忘了更新一下
$ sudo apt update
Ubuntu 18.04,代号 Bionic Beaver,这个版本完整的版本号是18.04 LTS(Long Term Support),是一个长期支持版本(10年)。
0x02 安装docker
用安装脚本一键安装
$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装docker-compose
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.
先安装一个pip
$ sudo apt install python-pip
再用pip安装docker-compose
$ pip install docker-compose
$ docker-compose --version //测试是否安装成功
报错了,执行以下语句,再继续安装docker-compose
$ mkdir ~/.pip/
$ cd ~/.pip/
$ vim pip.conf
# 添加以下代码
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
$ pip install --upgrade pip # 更新pip
有可能启动不了docker-compose,用官方的三条命令安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version //测试是否安装成功
0x03 搭建vulhub
这是官方的搭建步骤
# Download project
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
unzip vulhub-master.zip
cd vulhub-master
# Enter the directory of vulnerability/environment
cd flask/ssti
# Compile environment
docker-compose build
# Run environment
docker-compose up -d
但是在wget的时候因为是国内的服务器所以下载速度太慢了。
于是我先用科学上网在本机下好了这个包,再用Xshell的好兄弟Xftp传到了服务器里
解压
$ unzip vulhub-master.zip
切换到想要开启的漏洞环境中
输入以下命令即可运行一个容器
# Compile (optional)
$ docker-compose build
# Run
$ docker-compose up -d
docker加速
加速地址在阿里云的容器镜像服务中获取
$ sudo mkdir -p /etc/docker
$ vim /etc/docker/daemon.json
# 加入以下代码 { "registry-mirrors": ["加速器地址"] }
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
0x04 利用docker搭建sqli-labs、dvwa、upload-labs、...
sqli-labs
$ docker pull acgpiano/sqli-labs
$ docker run -d --name sqli -p 80:80 --rm acgpiano/sqli-labs
//-p 必不可少,将docker的端口映射到本地端口←
upload-labs
$ docker pull c0ny1/upload-labs
$ docker run -d --name upload -p 8080:80 --rm c0ny1/upload-labs
dvwa
$ docker pull citizenstig/dvwa
$ docker run -d --name upload -p 8000:80 --rm citizenstig/dvwa
停止所有容器:
$ docker stop $(docker ps -a -q)
0x05 安装LAMP
Apache2 web服务器
$ apt install apache2
安装的时候遇到了以下情况
考虑到可能是之前开了docker,80端口被占用了,于是先把docker关了
$ systemctl stop docker
再查看一下apache2的状态
$ systemctl status apache2
发现还是刚才那样 Failed to start The Apache HTTP Server. 令人绝望的是,重新安装也还是这样。
于是在网上找到一个教程,两行命令解决
$ apt purge apache2 //删除应用程序同时删除配置文件
$ apt install apache2
可能是之前端口被占用的时候配置文件出错了吧。
开启、关闭和重启 Apache服务的命令,和之前我的 centos7 vps 不同(apache2 处为 httpd)
$ systemctl start apache2
$ systemctl stop apache2
$ systemctl restart apache2
MySQL 数据库
https://www.cnblogs.com/opsprobe/p/9126864.html
PHP
只需要一行命令
$ apt install php
查看php版本信息
$ php -v
把 Apache 的默认页面的优先权给 index.php,也可以自定义默认页面。
$ vim /etc/apache2/mods-enabled/dir.conf //把index.php排在前面
修改配置文件后,重启一下Apache服务器
$ systemctl restart apache2
在 /var/www/html 中写入一个 index.php文件,内容为
$ vim /var/www/html/index.php
访问服务器ip,看到这个结果就代表成功了
0x06 cp命令复制多个文件
cp {apple.php,bitch.php,cat.txt} /var/www/html/
0x07 php连接mysql
最近给校赛出题,需要连接数据库,然后到网上搜了一下,给出的代码是这样的
connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
但是网页上一片空白,可能是哪里出错了,于是我打开了apache服务器的 error.log
位置: /var/log/apache2/error.log
发现了错误,原来是 php高版本不再使用mysql_connect()来连接数据库,用mysqli_connect()代替
有一种更方便的办法就是让网页直接显示错误信息,弄好了是这个样子
先通过phpinfo找到php的配置文件php.in的位置
在配置文件的头部添加两行代码
ini_set("display_errors", "stderr"); //ini_set函数作用:为一个配置选项设置值
error_reporting(E_ALL); //显示所有的错误信息
like this
重启apache服务器即可
接下来我把 mysql_connect() 改成了mysqli_connect(),结果还是报错了
原因是php没有添加mysqli扩展
如果源码安装的PHP就用源码的方式解决,如果apt install安装的PHP就用apt install的方式解决
我当时是用apt install 来安装php的,所以解决这个问题只需要2行命令
$ apt install php-mysql
$ systemctl restart apache2
命令执行后,再查看phpinfo页面,这时发现了mysqli扩展
这时候再测试一下,发现已经可以连接上数据库了
0x08 standard_init_linux.go:211: exec user process caused "no such file or directory"
做Dockerfile的时候运行容器报这个错误,打开vim看看文件格式
$ :set ff
如果显示fileformat=dos,输入以下命令把dos改成unix即可
$ :set ff=unix
0x09 tips for linux&docker
分析文件,可查看文件最近修改时间等等
$ stat [filename]
docker 批量停止运行中的容器
$ docker stop $(docker ps -q)
删除所有容器
$ docker rm $(docker ps -a -q)
删除所有镜像
$ docker rmi $(docker images)
0x10 iptables封禁ip
比如要办 202.206.96.49
$ iptables -I INPUT -s 202.206.96.49 -j DROP //也可以办一个网段
解禁
$ iptables -D INPUT -s 202.206.96.49 -j DROP
查看当前规则
$ iptables -L -n //numeric
清空封掉的IP地址
$ iptables -F
更多:
https://www.jb51.net/article/135785.htm
0x11 find命令
在根目录中按照文件名来查找(区分大小写)
$ find ./ name filename
在根目录中按照文件名来查找(不区分大小写)
$ find ./ iname filename
找flag
find ./ -name "flag*" |xargs grep "flag*"
更多:
https://blog.csdn.net/m0_38121874/article/details/77019127
0x12 远程传输文件
$ scp [email protected]:/flag /home //输入远程用户密码即可
新服务器
0x13 su root失败
真邪门,一直切换 root用户都认证失败,自己的服务器还root不了?
网上查找原因后发现原来是因为root没有初始化。
$ sudo passwd root
然后输入两次密码就行了
0x14 删除的时候显示^H
经常在某些程序中输入命令,输入错了一个字却删除不了出现的是按下的是Backspace 出现的却是^H。这时候在系统命令处执行
$ stty erase ^H
即可解决问题